PDA

View Full Version : Pyhon 3 - PyQT4: Table model



onsterion
29th March 2012, 14:42
Hi im new in Python and Qt

I have some questions and problems.


1- How can NoEdit for one column my case the id column?


def ejecutar_query_ver_items(self):
self.ventana.data_base.open()
winsound.PlaySound("SystemAsterisk", winsound.SND_ASYNC)
self.ventana.var_select_model.setTable('items')
self.ventana.var_select_model.select()
self.ventana.var_select_model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.ventana.var_select_model.setHeaderData(1, QtCore.Qt.Horizontal, "Nombre")
self.ventana.var_select_model.setHeaderData(2, QtCore.Qt.Horizontal, "Cantidad")
self.ventana.var_select_model.setHeaderData(3, QtCore.Qt.Horizontal, "Precio")
self.ventana.var_select_model.setHeaderData(4, QtCore.Qt.Horizontal, "Ultima Modificacion")
self.ventana.var_select_model.setHeaderData(5, QtCore.Qt.Horizontal, "IP")
self.ventana.tableView_ver_items.setModel(self.ven tana.var_select_model)
self.ventana.tableView_ver_items.hideColumn(5)
self.ventana.data_base.close()

2- If not use "self.ventana.data_base.close()" querys crash when I insert or delete, but with this problem i can´t change the fields in real time.


def ejecutar_query_ver_items(self):
self.ventana.data_base.open()
winsound.PlaySound("SystemAsterisk", winsound.SND_ASYNC)
self.ventana.var_select_model.setTable('items')
self.ventana.var_select_model.select()
self.ventana.var_select_model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.ventana.var_select_model.setHeaderData(1, QtCore.Qt.Horizontal, "Nombre")
self.ventana.var_select_model.setHeaderData(2, QtCore.Qt.Horizontal, "Cantidad")
self.ventana.var_select_model.setHeaderData(3, QtCore.Qt.Horizontal, "Precio")
self.ventana.var_select_model.setHeaderData(4, QtCore.Qt.Horizontal, "Ultima Modificacion")
self.ventana.var_select_model.setHeaderData(5, QtCore.Qt.Horizontal, "IP")
self.ventana.tableView_ver_items.setModel(self.ven tana.var_select_model)
self.ventana.tableView_ver_items.hideColumn(5)
self.ventana.data_base.close()

def ejecutar_query_agregar_items(self):
self.ventana.data_base.open()

if self.ventana.lineEdit_nombre_del_item.text() == '' or self.ventana.lineEdit_cantidad_del_item.text() == '' or self.ventana.lineEdit_valor_del_item.text() == '' :
winsound.PlaySound("SystemHand", winsound.SND_ASYNC)
self.ventana.mensaje_alerta_completar_casilla = QtGui.QMessageBox.warning(self, 'Mensaje',
"Debes completar las casillas", QtGui.QMessageBox.Yes)

self.ventana.data_base.close()
else:
winsound.PlaySound("SystemQuestion", winsound.SND_ASYNC)
self.ventana.mensaje_alerta_ingresar = QtGui.QMessageBox.question(self, 'Mensaje',
"¿Seguro que quieres agregar el item?", QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No)


if self.ventana.mensaje_alerta_ingresar == QtGui.QMessageBox.Yes:
winsound.PlaySound("SystemAsterisk", winsound.SND_ASYNC)
self.ventana.var_insert_model.exec("INSERT INTO items (nombre, cantidad, precio, ultima_modificacion, ip_de_quien_agrego) VALUES " + str ( (self.ventana.lineEdit_nombre_del_item.text(),self .ventana.lineEdit_cantidad_del_item.text(),self.ve ntana.lineEdit_valor_del_item.text(), self.ventana.horario_pc, self.ventana.var_detecto_ip)))
self.ventana.var_select_despues_de_ingresar_model. setTable('items')
self.ventana.var_select_despues_de_ingresar_model. select()
self.ventana.var_select_despues_de_ingresar_model. setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.ventana.var_select_despues_de_ingresar_model. setHeaderData(1, QtCore.Qt.Horizontal, "Nombre")
self.ventana.var_select_despues_de_ingresar_model. setHeaderData(2, QtCore.Qt.Horizontal, "Cantidad")
self.ventana.var_select_despues_de_ingresar_model. setHeaderData(3, QtCore.Qt.Horizontal, "Precio")
self.ventana.var_select_despues_de_ingresar_model. setHeaderData(4, QtCore.Qt.Horizontal, "Ultima Modificacion")
self.ventana.tableView_ver_items.setModel(self.ven tana.var_select_despues_de_ingresar_model)
self.ventana.tableView_ver_items.hideColumn(5)

self.ventana.data_base.close()
else:
print('Cancelo')
self.ventana.data_base.close()

def ejecutar_query_sacar_items(self):
self.ventana.data_base.open()

if self.ventana.lineEdit_id_para_eliminar_items.text( ) == '' :
winsound.PlaySound("SystemHand", winsound.SND_ASYNC)
self.ventana.mensaje_alerta_completar_casilla = QtGui.QMessageBox.warning(self, 'Mensaje',
"Debes completar con un ID Válido", QtGui.QMessageBox.Yes)

self.ventana.data_base.close()
else:
self.ventana.var_ver_si_se_puede_sacar_item.exec("SELECT * FROM items WHERE id = " + str ( (self.ventana.lineEdit_id_para_eliminar_items.text ())))
if self.ventana.var_ver_si_se_puede_sacar_item.numRow sAffected() > 0 :
winsound.PlaySound("SystemQuestion", winsound.SND_ASYNC)
self.ventana.mensaje_alerta_borrar = QtGui.QMessageBox.question(self, 'Mensaje',
"¿Seguro que quieres borrar el item?", QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No)

if self.ventana.mensaje_alerta_borrar == QtGui.QMessageBox.Yes:
winsound.PlaySound("SystemAsterisk", winsound.SND_ASYNC)
self.ventana.var_sacar_model.exec("DELETE FROM items WHERE id = " + str ( (self.ventana.lineEdit_id_para_eliminar_items.text ())))
self.ventana.var_select_despues_de_borrar_model.se tTable('items')
self.ventana.var_select_despues_de_borrar_model.se lect()
self.ventana.var_select_despues_de_borrar_model.se tHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.ventana.var_select_despues_de_borrar_model.se tHeaderData(1, QtCore.Qt.Horizontal, "Nombre")
self.ventana.var_select_despues_de_borrar_model.se tHeaderData(2, QtCore.Qt.Horizontal, "Cantidad")
self.ventana.var_select_despues_de_borrar_model.se tHeaderData(3, QtCore.Qt.Horizontal, "Precio")
self.ventana.var_select_despues_de_borrar_model.se tHeaderData(4, QtCore.Qt.Horizontal, "Ultima Modificacion")
self.ventana.tableView_ver_items.setModel(self.ven tana.var_select_despues_de_borrar_model)
self.ventana.tableView_ver_items.hideColumn(5)

self.ventana.data_base.close()
else:
print('Cancelo')
else:
winsound.PlaySound("SystemHand", winsound.SND_ASYNC)
self.ventana.mensaje_alerta_completar_casilla = QtGui.QMessageBox.warning(self, 'Mensaje',
"Debes completar con un ID Válido", QtGui.QMessageBox.Yes)

self.ventana.data_base.close()


3- How can change the stylesheet (padding or text-align: center) in the field ?



QHeaderView::section {

}

QLineEdit:read-only {


}

QTableView {


}


Sorry for my english



Thanks.-

onsterion
3rd April 2012, 14:41
Any idea? T_T