Доступ к элементам формы через внешние методы

Рейтинг: 0Ответов: 1Опубликовано: 31.12.2014

Друзья, как через сторонний метод передавать данные на форму?
Так понимаю, здесь стоит рыть в сторону сигналов, но всё никак не разберусь, как и зачем их нужно подключать.
На данном примере хотелось бы устанавливать надпись на кнопку из 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_())

Ответы

Ответов пока нет.