我正在使用PyQt4和Python 2.7为QGIS 2开发插件。
我QTableWidgets
用于显示/比较数据库中的现有信息和新输入的相同功能的信息。对话框中有两个QTableWidgets
- 当在一个表中选择一行时,我想连接到一个方法,在另一个表中选择一行将连接到另一个方法。按下按钮框上的正常按钮应该完成每个方法中的任务,按下取消应该回滚新的编辑。
我的问题:
我进入一个无限循环,重复连接到函数,无法关闭对话框并完成任务,无论是否正常,取消或关闭对话框。令人费解的是,每次似乎都会发生不同的事情 - 我猜测可能出现的问题:与混合信号和插槽有关的事情,或许我的函数应该返回一些东西,以便我可以退出它。
如果这是重要信息,buttonBox会向accepted()
插槽中的插件模块发出accept()
信号,并在rejected()
插槽中向reject()
信号发送插件模块。这是在PyQt4设计器中设置的。
以下是我的代码的一些相关部分:
def updateTableWidget(self, fid):
...
self.dlg.ui.maintTable.itemSelectionChanged.connect(self.updateData)
self.dlg.ui.existTable.itemSelectionChanged.connect(self.checkData)
…
def updateData(self):
QMessageBox.information(None, 'Connection Result', "In updateData method")
result = self.dlg.exec_()
if result == 1:
self.myLayer.endEditCommand()
QMessageBox.information(None, 'Whoopie PIE', "You have arrived at the terminal")
else:
self.myLayer.destroyEditCommand()
def checkData(self):
QMessageBox.information(None, 'Connection Result', "In checkData method")
result = self.dlg.exec_()
if result == 1:
QMessageBox.information(None, 'Info', "Turn around and try again later")
self.myLayer.destroyEditCommand()
else:
self.myLayer.destroyEditCommand()