我使用PyQT4创建GUI。我有一个按钮,当满足某个条件时,需要与一个def
连接。如果不满足此条件,则该按钮应连接到另一个def
。到目前为止,这就是我所拥有的 -
if self.txtAgilent.text() and self.txtBattery.text():
self.connect(self.buttonPlot, SIGNAL('clicked()'), self.plotButtonClicked)
else:
self.connect(self.buttonPlot, SIGNAL('clicked()'), self.fileErrorMsgBox)
如上所述,如果满足第一个条件(即,如果选择了两个文件),则创建一个图。如果没有,则弹出错误消息框。现在的问题是,每当我点击GUI上的绘图按钮时,即使我成功选择了两个文件,也只会弹出错误消息框。
消息框功能如下:
def fileErrorMsgBox(self):
w = QWidget()
msg = QMessageBox.warning(w, "WARNING", "File(s) not chosen! Please choose a file.")
如何解决此问题?
答案 0 :(得分:1)
最好的方法是不要尝试更改按钮所连接的方法。相反,保持按钮连接到相同的方法,在那个方法中,执行检查(无论选择的是什么或适当的文本都在文本框中,无论您的用例如何)。
所以,例如,像:
def __init__(self):
self.connect(self.buttonPlot, SIGNAL('clicked()'), self.plotButtonClicked)
def plotButtonClicked(self):
if self.txtAgilent.text() and self.txtBattery.text():
# do what plotButtonClicked did before
else:
# create and show the error message box
注意,你应该在PyQt中使用new style signals/slot API来执行这样的连接:
self.buttonPlot.clicked.connect(self.plotButtonClicked)