Начальный вопрос 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. Спасибо!
Во-первых, есть гораздо лучший способ подключения сигналов к слотам на PyQt:
self.button.clicked.connect(self.method)
Вы можете использовать лямбда-функции для передачи дополнительных аргументов методам.
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, который будет изменен