Доступ к элементам формы через внешние методы
Друзья, как через сторонний метод передавать данные на форму?
Так понимаю, здесь стоит рыть в сторону сигналов, но всё никак не разберусь, как и зачем их нужно подключать.
На данном примере хотелось бы устанавливать надпись на кнопку из QLineEdit, но чтобы всё это шло через Cycle, а не через методы MyWindow.
from PyQt4 import QtCore, QtGui
from time import sleep
import sys
global i; i=0
def Cycle():
while(True):
i+=1
print(i)
sleep(1)
class MyThread(QtCore.QThread):
def __init__(self, parent=None):
QtCore.QThread.__init__(self, parent)
def run(self):
Cycle()
class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.button=QtGui.QPushButton("START")
self.label=QtGui.QLabel("")
self.txtName = QtGui.QLineEdit('', self)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.vbox=QtGui.QVBoxLayout()
self.vbox.addWidget(self.button)
self.vbox.addWidget(self.label)
self.vbox.addWidget(self.txtName)
self.setLayout(self.vbox)
self.connect(self.button,QtCore.SIGNAL("clicked()"),self.on_clicked)
self.mythread=MyThread()
def setTextOnButton(self):
self.button.setText(str(i))
def on_clicked(self):
self.setTextOnButton()
self.mythread.start()
if __name__ == "__main__":
app=QtGui.QApplication(sys.argv)
window=MyWindow()
window.resize(250, 50)
window.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском