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 个回答
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'))
你可以传递任何你想要的东西,包括你想要修改的主窗口实例。