我试图分析这里引用的示例代码:PyQt - QMessageBox 以下是片段:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Window(QMainWindow):
def __init__(self):
super().__init__()
w = QWidget()
b = QPushButton(self)
b.setText("Show message!")
b.clicked.connect(self.showdialog)
w.setWindowTitle("PyQt Dialog demo")
def showdialog(self):
msg = QMessageBox()
msg.setIcon(QMessageBox.Question)
# self.connect(msg, SIGNAL('clicked()'), self.msgbtn)
msg.buttonClicked.connect(self.msgbtn)
msg.exec_()
def msgbtn(self, i):
print("Button pressed is:", i.text())
if __name__ == '__main__':
app = QApplication([])
w = Window()
w.show()
app.exec_()
有两种方法可以将信号连接到PyQt中的插槽。对于按钮,它是:
^{pr2}$或者
widget.clicked.connect(slot_function)
第二种方法可以很好地工作:按预期调用msgbtn
slot方法。但是,如果我尝试将其更改为更常用的“PyQt onic”连接方式(即第一种方式-我在片段中注释了它),则永远不会调用slot方法。有人能帮我解决这个问题吗?在
传递给signal的信号不正确,QMessageBox没有单击的信号,但信号是
buttonClicked (QAbstractButton *)
,因此正确的做法是:另一方面,它不是PyQt onic样式,而是不建议使用的旧样式,但我们建议使用新样式。在
旧款:
新样式:
有关详细信息,请阅读docs。在
相关问题 更多 >
编程相关推荐