import time
from PyQt5 import QtCore
from PyQt5.QtCore import Qt,QObject
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QDesktopWidget
from PyQt5.QtWidgets import QMainWindow, QLabel, QLineEdit, QGridLayout, QCheckBox
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QPixmap,QImage
from threading import Thread #Потоки
class Main_Window(QMainWindow):
def __init__(self):
super(Main_Window,self).__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('Ready')
#Отображаем текст в статусбаре
def setStatusBar(self,text):
self.statusBar().showMessage(str(text))
class Main_Widget(QWidget):
def __init__(self):
super(Main_Widget,self).__init__()
class MyThread(Thread):
message = QtCore.pyqtSignal(str)
def __init__(self):
Thread.__init__(self)
def run(self):
time.sleep(2)
i = 0
while True:
text = str(i)
i = i+1
#Тут надо как-то вызвать смену текста статусбара
self.message.emit(text)
time.sleep(2)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Main_Window()
widget = Main_Widget()
window.setCentralWidget(widget)
window.show()
#window.connect(QtCore.pyqtSignal("message()"),window.setStatusBar)
t = MyThread()
t.start()
sys.exit(app.exec_())
Переписал. Теперь стало ругаться так:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 637, in _bootstrap_inner
self.run()
File "D:\MyFiles\tests\1.py", line 50, in run
self.message.emit(text)
TypeError: pyqtSignal must be bound to a QObject, not 'MyThread'
Я не очень еще разобрался как сконнектить слот и сигнал… но если раскомментировать вот эту строку
#window.connect(QtCore.pyqtSignal("message()"),window.setStatusBar)
То выдается такая ошибка:
Traceback (most recent call last):
File "<string>", line 420, in run_nodebug
File "D:\MyFiles\tests\1.py", line 60, in <module>
window.connect(QtCore.pyqtSignal("message()"),window.setStatusBar)
AttributeError: 'Main_Window' object has no attribute 'connect'
Порывшись в инете понял только то, что объект может генерить сигнал, если он унаследован от QObject. Но как это реализовать пока никак не пойму.