์๋ ํ์ธ์.
์ค๋์ Python์ ๋ด์ฅ๋์ด ์๋ threading๊ณผ PyQt5dml QThread์ ์ฐจ์ด์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
threading ์ฐ๋ ๋ ์ญํ ์ํ๊ณ , QThread๋ ์ฐ๋ ๋ ์ญํ ์ ํฉ๋๋ค.
ํ์ง๋ง ๋ถ๋ช ํ ๋์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ฐ์ , ์ฐ๋ ๋์ ๋ํด ์ ๋งคํ์๋ค๋ฉด ์๋ ๊ธ์ ๋ณด์๋ฉด ๋ฉ๋๋ค.
https://coding-yoon.tistory.com/45
์ ๋ฒ ๊ธ๊ณผ ๋๊ฐ์ด QThread์ ๊ตฌํํ๊ฒ ์ต๋๋ค.
#์ฐ๋ ๋๋ฅผ ์ ์ธํ ๊ฐ๋จํ ์์
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
import sys
#์ฐ๋ ๋ ์ ์ธ
class Thread1(QThread):
#parent = MainWidget์ ์์ ๋ฐ์.
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
for i in range(10):
print("Thread :",i)
time.sleep(1)
class MainWidget(QWidget):
def __init__(self):
super().__init__()
thread_start = QPushButton("์ ์!")
thread_start.clicked.connect(self.increaseNumber)
vbox = QVBoxLayout()
vbox.addWidget(thread_start)
self.resize(200,200)
self.setLayout(vbox)
def increaseNumber(self):
x = Thread1(self)
x.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MainWidget()
widget.show()
sys.exit(app.exec_())
์ด๋ฒ์ Python threading์ ์ด์ฉํด ์ฐ๋ ๋๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค.
#threading์ ์ด์ฉํด ์ฐ๋ ๋ ๊ตฌํ
from PyQt5.QtWidgets import *
import threading
import time
import sys
#์ฐ๋ ๋ ์ ์ธ
class Thread1(threading.Thread):
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
for i in range(10):
print("Thread :",i)
time.sleep(1)
class MainWidget(QWidget):
def __init__(self):
super().__init__()
thread_start = QPushButton("์ ์!")
thread_start.clicked.connect(self.increaseNumber)
vbox = QVBoxLayout()
vbox.addWidget(thread_start)
self.resize(200,200)
self.setLayout(vbox)
def increaseNumber(self):
x = Thread1()
x.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MainWidget()
widget.show()
sys.exit(app.exec_())
๋ ๊ฐ์ ์ฐจ์ด์ ์ ์์๊ฒ ๋์?
threading์ gui๊ฐ ์ข ๋ฃ๋์ด๋ ํ๋์ ์ฐ๋ ๋๋ก์ ์์ ์ ์ผ์ ๋ง์น ๋๊น์ง ์ฐ๋ ๋๊ฐ ๋์๊ฐ๋ ๋ฐ๋ฉด์,
QThread๋ gui๊ฐ ๊บผ์ง๋ฉด, ๊ฐ์ด ์ฐ๋ ๋๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.