PyQT - 从其他函数修改主窗口小部件

时间:2011-05-17 00:32:54

标签: python pyqt

PyQT初学者问题。我想知道如何执行以下操作 - 从主窗口类外部修改主窗口中的窗口小部件。像这样:

class MainWindow(QtGui.QMainWindow):    

    def __init__(self, parent=None):

        super(MainWindow,self).__init__(parent)

        self.ui = Ui_MainWindow()        
        self.ui.setupUi(self)

        self.ui.progressBar.setMaximum(100)
        self.ui.progressBar.setMinimum(0)
        self.ui.progressBar.setValue(0)

        self.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.slotDoStuff)

    def slotDoStuff(self):
        AnotherFunction()


def AnotherFunction():    
    modify progress bar here...

有没有办法做这样的事情?我想为各种主窗口操作子类化事件处理程序,而不是在MainWindow类中都有它们。谢谢!

1 个答案:

答案 0 :(得分:4)

首先,有一种更好的方法将信号连接到PyQt上的插槽:

self.button.clicked.connect(self.method)

您可以使用lambda函数将额外的参数传递给方法。

def do_stuff(arg)
     #do stuff with arg

然后你打电话

self.button1.clicked.connect(lambda : do_stuff('btn one'))
self.button2.clicked.connect(lambda : do_stuff('btn two'))

您可以传递任何想要的内容,包括要修改的MainWindow实例