类中没有声明主窗口的槽

时间:2013-02-08 14:27:50

标签: python pyqt pyqt4 slots

主窗口在Class1中声明。我正在尝试创建Class2的对象,创建一个小部件(一个按钮)并将其连接到一个插槽。

import sys
from PyQt4 import QtGui,QtCore

class Class2(object):
    def __init__(self,parent):
        return
    def button(self,parent):
        self.print_button=QtGui.QPushButton("print hello",parent)
        self.print_button.show()
        self.print_button.clicked.connect(self.print_hello)

    def print_hello(self,parent):
        print 'hello'



class Class1(QtGui.QMainWindow):
    def __init__(self):
        super(Class1, self).__init__()
        self.welcomeScreen()

    def welcomeScreen(self):
        obj=Class2(self)
        obj.button(self)


def main():
    app = QtGui.QApplication(sys.argv)
    mw = Class1()
    mw.show()
    sys.exit(app.exec_())


if __name__=='__main__':
    main()

现在,按钮正在创建,但插槽无效。如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

你的print_hello需要2个参数,而你只传递一个参数。

试试这个:

self.print_button.clicked.connect(lambda: self.print_hello(self))