我正在使用pyqt4,qt designer和postgresql数据库。我已经设法将我的GUI的一部分插入到我的数据库中,但是现在我想为GUI的删除部分尝试其他的东西。因为我现在已经进入python / pyqt一周了,所以我会尝试尽可能简单地解释我正在寻找的内容。首先:这是我用于添加数据的代码的一部分:
...
class database_GUI(QtGui.QWidget, Ui_Main_GUI_Widget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.Add_button.clicked.connect(self.open_sub_ui)
def open_sub_ui(self):
if self.Add_comboBox.currentText() == "kirurg":
global kirurg
kirurg = kirurg_GUI()
kirurg.show()
...
class kirurg_GUI(QtGui.QWidget, Ui_kirurg_Widget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.kirurg_Add_button.clicked.connect(self.insert_kirurg)
def insert_kirurg(self):
oib_kir = self.kirurg_oib_kir_lineEdit.text()
if not oib_kir:
QtGui.QMessageBox.critical(self, 'Query error', 'oib_kir must not be empty')
else:
query = QSqlQuery()
status = query.exec("INSERT INTO kirurg (oib_kir, prezime, ime, adresa, broj_telefona)"
"VALUES ('%s', '%s', '%s', '%s', '%s')" % (''.join(self.kirurg_oib_kir_lineEdit.text()),
''.join(self.kirurg_prezime_lineEdit.text()),
''.join(self.kirurg_ime_lineEdit.text()),
''.join(self.kirurg_adresa_lineEdit.text()),
''.join(self.kirurg_broj_telefona_lineEdit.text())))
if status is not True:
errorText = query.lastError().text()
QtGui.QMessageBox.critical(self, 'Query error', errorText)
基本上,新GUI将为每个其他comboBox选项打开。如果用户选择comboBox选项1并单击添加,则会打开GUI以将数据添加到表编号1,如果用户选择comboBox选项2并单击添加,则会打开GUI以将数据添加到表编号2,依此类推。 但是,我想用我的删除GUI更灵活,所以我想知道是否可以做这样的事情:
query.exec("DELETE FROM ('%s') WHERE ('%s) = ('%s'))
这些('%s')事物应该是字符串,我的程序将从lineEdit.text()读取。所以基本上,程序会读取用户在lineEdit中输入的数据,并根据它们知道要删除哪一行数据以及从哪个表中删除。我希望你能在这里看到我的观点和问题。如果不可能的话,我想我会为每张桌子再制作12张复制粘贴的GUI,但我希望有更好的解决方案。