2011-05-17 36 views
1

一個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類中。謝謝!

回答

3

首先,有將信號連接到插槽上的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')) 

你可以通過任何你想要的,包括你的主窗口實例進行修改

+0

感謝,拉姆達訣竅是很酷! :) – jeverling 2012-09-05 13:56:35

相關問題