728x90
반응형
import ctypes
import sys
import threading
import time
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QThread
from PyQt5.QtWidgets import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.Button_state = True
self.pb_start.clicked.connect(self.click1_function)
# thread setup
self.test_thread_id = 0
def click1_function(self):
if self.Button_state:
self.Button_state = False
self.pb_start.setText('Stop')
self.test = threading.Thread(target=self.Thread_Test1)
self.test.daemon = True
self.test.start()
elif self.Button_state == False:
self.Button_state = True
self.pb_start.setText('start')
self.stop_thread()
print('check')
def setupUi(self, QMainWindow):
self.resize(500, 500)
self.centralwidget = QtWidgets.QWidget(QMainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pb_start = QtWidgets.QPushButton(self.centralwidget)
self.pb_start.setGeometry(QtCore.QRect(100, 100, 100, 100))
self.pb_start.setObjectName("pb_start")
self.pb_start.setText("Start")
QMainWindow.setCentralWidget(self.centralwidget)
def Thread_Test1(self):
i = 0
print(self.test.ident)
self.test_thread_id = self.test.ident
while True:
print(i)
i += 1
time.sleep(10)
print("END")
print("End")
def stop_thread(self):
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(self.test_thread_id,
ctypes.py_object(SystemExit))
if __name__ == "__main__":
app = QApplication(sys.argv)
myApp = MyWindow()
myApp.show()
app.exec_()
결과 화면
728x90
반응형
'공부 > Python' 카테고리의 다른 글
[FTDI]Python 으로 칩 정보로 포트 찾기 (0) | 2022.02.15 |
---|---|
7.[Thread]Qt Designer + PyQt5 (0) | 2021.06.05 |
6.[Scroll Area]Qt Designer + PyQt5 (0) | 2021.05.25 |
5.[Text]Qt Designer + PyQt5 (0) | 2021.05.07 |
4.[check box]Qt Designer + PyQt5 (0) | 2021.05.07 |