MyTetra Share
Делитесь знаниями!
аргументы метода emit
Время создания: 09.09.2017 20:42
Раздел: Python - PyQt4 - Threading - Многопоточные приложения - примеры с emit
Запись: xintrea/mytetra_db_mcold/master/base/1504978923iqc8lcmibv/text.html на raw.githubusercontent.com
# количество аргументов сигнала произволно
# но должно совпадать с количеством учитывающемся в качестве аргументов
# выполняемой функции

from PyQt4 import QtGui, QtCore
import sys


class MyThread(QtCore.QThread):
def __init__(self, parent=None):
QtCore.QThread.
__init__(self, parent)
self.running = False
self.count = 0

def run(self):
self.running = True
while
self.running:
self.count += 1
self.ss = 'money'
l = [str(self.count), str(self.ss)]
# количество аргументов сигнала произволно
# но должно совпадать с количеством учитывающемся в качестве аргументов
# выполняемой функции
#self.emit(QtCore.SIGNAL("mysignal"), str(self.count), str(self.ss))
self.emit(QtCore.SIGNAL("mysignal"), *l)
self.sleep(1)


class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.
__init__(self, parent)
self.label = QtGui.QLabel("Press button for execute thread")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.btnStart = QtGui.QPushButton("Start thread")
self.btnStop = QtGui.QPushButton("Stop thread")
self.vbox = QtGui.QVBoxLayout()
self.vbox.addWidget(self.label)
self.vbox.addWidget(self.btnStart)
self.vbox.addWidget(self.btnStop)
self.setLayout(self.vbox)

self.mythread = MyThread()
self.connect(self.btnStart, QtCore.SIGNAL("clicked()"), self.on_start)
self.connect(self.btnStop, QtCore.SIGNAL("clicked()"), self.on_stop)
self.connect(self.mythread, QtCore.SIGNAL("mysignal"), self.on_change, QtCore.Qt.QueuedConnection)

def on_start(self):
if not self.mythread.isRunning():
self.mythread.start()

def on_stop(self):
self.mythread.running = False

def
on_change(self, s, ss):
self.label.setText(s)
print(ss)
#print(ss)


if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(
"Using class QThread")
window.resize(
300, 100)
window.show()
sys.exit(app.exec_())
Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования