Python 2.7 PyQt4按钮连接问题

Python 2.7 PyQt4按钮连接问题,python-2.7,pyqt4,Python 2.7,Pyqt4,有一个类GUI_XMLtool,它是从.ui QtDesigner文件生成的。 还有一个MyApp类。现在我正在尝试将按钮(XSD_path_PB)单击连接到MyApp方法调用。我尝试两种方式(其中一种是评论) 这是最简单的事情,但我得到了一个可怕的错误跟踪: wahwah Traceback (most recent call last): File "C:/Users/***/PycharmProjects/XMLTool/GUI/Main.py", line 20, in <mo

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

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

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'
wahwah
回溯(最近一次呼叫最后一次):
文件“C:/Users/***/PycharmProjects/XMLTool/GUI/Main.py”,第20行,在
window=MyApp()
文件“C:/Users/***/PycharmProjects/XMLTool/GUI/Main.py”,第12行,在_init中__
self.connect(self.ui.XSD_path_PB,QtCore.SIGNAL(“clicked()”),self.someMethod())
TypeError:参数与任何重载调用不匹配:
QObject.connect(QObject,SIGNAL(),QObject,SLOT(),Qt.ConnectionType=Qt.AutoConnection):参数3具有意外的类型“NoneType”
QObject.connect(QObject,SIGNAL(),可调用,Qt.ConnectionType=Qt.AutoConnection):参数3具有意外的类型“NoneType”
QObject.connect(QObject,SIGNAL(),SLOT(),Qt.ConnectionType=Qt.AutoConnection):参数3具有意外的类型“NoneType”

有什么问题吗?

对于新样式的信号和插槽(注释的一个),您应该写:

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'>  
>>类型(someMethod)
>>>type(someMethod)                                                                                                                 
<class 'function'>