Programing/python

외부 쓰레드에서 qt ui 접근

Ezzi 2021. 5. 11. 13:57
반응형
import sys

from typing import Counter
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class MyWindow(QDialog):    
    def __init__(self, parent=None):
        super().__init__(parent)

        # setting ui
        self.text_edit = QTextEdit(self)
        self.text_edit.setEnabled(True)
        box_layout = QVBoxLayout()
        box_layout.addWidget(self.text_edit)        
        self.setLayout(box_layout)

        # start thread
        self.myThread = Worker(parent=self)        
        self.myThread.count_changed.connect(self.update_count)  # custom signal from worker thread to main thread        
        self.myThread.start()
     
    #@pyqtSlot(int)
    def update_count(self, count):
        self.text_edit.append(str(count))  

class Worker(QThread):
    count_changed = pyqtSignal(int)
    def __init__(self, parent=None):
        super().__init__()
        self.main = parent
        self.working = True
        self.count = 0

    def run(self):
        while self.working:            
            self.count_changed.emit(self.count)
            self.sleep(1)
            self.count += 1

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MyWindow()    
    window.show()
    
    app.exec_()

 

- git hub code

 

github.com/Helloezzi/qt_ui_access_from_external_thread

 

Helloezzi/qt_ui_access_from_external_thread

Contribute to Helloezzi/qt_ui_access_from_external_thread development by creating an account on GitHub.

github.com

실행화면

 

반응형

'Programing > python' 카테고리의 다른 글

[python] country code 가지고 오기  (0) 2021.05.11
python 외부 ip 주소 가지고 오기  (0) 2021.05.11
OpenGL in python : create window  (0) 2021.03.15
[python] file io 연습  (0) 2020.02.24
[python] class reference (from ~ import)  (0) 2020.02.22