【问题标题】:PyQt4 PushButton connection issuePyQt4 PushButton 连接问题
【发布时间】:2016-03-17 07:37:55
【问题描述】:

有一个从 .ui QtDesigner 文件生成的 GUI_XMLtool 类。 还有一个 MyApp 类。现在我正在尝试将 PushButton (XSD_path_PB) 单击连接到 MyApp 方法调用。我正在尝试两种方式(其中一种已被评论)

from PyQt4 import QtCore, QtGui
from GUI import GUI_XMLtool
import sys

class MyApp(QtGui.QMainWindow, GUI_XMLtool):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.ui = GUI_XMLtool()
        self.ui.setupUi(self)

        self.connect(self.ui.XSD_path_PB, QtCore.SIGNAL("clicked()"), self.someMethod())
        #self.ui.XSD_path_PB.clicked.connect(self.someMethod())

    def someMethod(self):
        print "wahwah"

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

这是最简单的事情,但我得到了一个可怕的错误跟踪:

wahwah
Traceback (most recent call last):
  File "C:/Users/***/PycharmProjects/XMLTool/GUI/Main.py", line 20, in <module>
    window = MyApp()
  File "C:/Users/***/PycharmProjects/XMLTool/GUI/Main.py", line 12, in __init__
    self.connect(self.ui.XSD_path_PB, QtCore.SIGNAL("clicked()"), self.someMethod())
TypeError: arguments did not match any overloaded call:
  QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
  QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
  QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'

怎么了?

【问题讨论】:

    标签: python-2.7 pyqt4


    【解决方案1】:

    使用新样式的信号和槽(注释的那个),你应该写:

    self.ui.XSD_path_PB.clicked.connect(self.someMethod)
    

    而不是

    self.ui.XSD_path_PB.clicked.connect(self.someMethod())
    

    当执行第二行时,self.someMethod() 被调用,并返回一个值(在你的情况下为默认返回值None)。然后,使用该值调用connect。它期望这个值是一个可调用的python(一个方法),但它不是(它是None),所以你得到一个TypeError

    要获得可调用的python,您只需使用self.someMethod

    >>>type(someMethod)                                                                                                                 
    <class 'function'>  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多