B23: Chạy đa luồng với QThread, pyqt5, 2 nguồn dữ liệu khác nhau, 2021 "lato' channel"

Описание к видео B23: Chạy đa luồng với QThread, pyqt5, 2 nguồn dữ liệu khác nhau, 2021 "lato' channel"

********************************************************************
1, Đây là kênh chat của tụi mình:
Liện hệ qua chương trình discord:   / discord  

2, hướng dẫn Qt Designer cơ bản các bạn xem ở link này nhé:
   • B1: Qt designer cơ bản, file.ui to fi...  

3, code chạy của chương trình:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore
import time
from gui import Ui_MainWindow

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.uic = Ui_MainWindow()
self.uic.setupUi(self)

self.thread = {}

self.uic.Button_start_1.clicked.connect(self.start_worker_1)
self.uic.Button_start_2.clicked.connect(self.start_worker_2)

self.uic.Button_stop_1.clicked.connect(self.stop_worker_1)
self.uic.Button_stop_2.clicked.connect(self.stop_worker_2)

def start_worker_1(self):
self.thread[1] = ThreadClass(index=1)
self.thread[1].start()
self.thread[1].signal.connect(self.my_function)
self.uic.Button_start_1.setEnabled(False)
self.uic.Button_stop_1.setEnabled(True)

def start_worker_2(self):
self.thread[2] = ThreadClass_1(index=2)
self.thread[2].start()
self.thread[2].signal_1.connect(self.new_funtion)
self.uic.Button_start_2.setEnabled(False)
self.uic.Button_stop_2.setEnabled(True)

def stop_worker_1(self):
self.thread[1].stop()
self.uic.lcdNumber_1.display(0)
self.uic.Button_stop_1.setEnabled(False)
self.uic.Button_start_1.setEnabled(True)

def stop_worker_2(self):
self.thread[2].stop()
self.uic.lcdNumber_2.display(0)
self.uic.Button_stop_2.setEnabled(False)
self.uic.Button_start_2.setEnabled(True)

def my_function(self, counter):
m = counter
if m == 1:
self.uic.lcdNumber_1.display(1)
elif m == 3:
self.uic.lcdNumber_1.display(2)
elif m == 6:
self.uic.lcdNumber_1.display(3)
elif m == 10:
self.uic.lcdNumber_1.display(4)

def new_funtion(self, counter_1):
m = counter_1
self.uic.lcdNumber_2.display(m)

class ThreadClass(QtCore.QThread):
signal = pyqtSignal(int)

def __init__(self, index=0):
super().__init__()
self.index = index

def run(self):
print('Starting thread...', self.index)
counter = 0
while True:
counter += 1
self.signal.emit(counter)
print(counter)
time.sleep(1)
if counter == 10:
counter = 0

def stop(self):
print('Stopping thread...', self.index)
self.terminate()

class ThreadClass_1(QtCore.QThread):
signal_1 = pyqtSignal(int)

def __init__(self, index=0):
super().__init__()
self.index = index

def run(self):
print('Starting thread...', self.index)
counter_1 = 0
while True:
counter_1 += 1
self.signal_1.emit(counter_1)
print(counter_1)
time.sleep(0.1)
if counter_1 == 100:
counter_1 = 0

def stop(self):
print('Stopping thread...', self.index)
self.terminate()

if _name_ == "__main__":
app = QApplication(sys.argv)
main_win = MainWindow()
main_win.show()
sys.exit(app.exec())


👉Chào mừng các bạn đã đến với kênh Lato’channel!!!
👍Là Kênh Chuyên đăng tải những video đa dạng về cuộc sống, giải trí… Nhằm mang đến cho tất cả quý vị và các bạn những hướng dẫn có ích, Và những giây phút thư giản sau những giờ làm việc mệt mỏi..
Nếu các bạn yêu thích và quan tâm thì hãy nhấn đăng ký kênh để theo dõi và ủng hộ cho Lato nhé...Chân thành Cảm ơn Mọi Người Rất Nhiều..!!
Đăng Ký Kênh👇FREE (miễn phí)    / @latochannel  
Tránh làm phiền bạn có thể không bấm vào biểu tượng quả chuông.
Video Gốc Bản Quyền Thuộc Về Lato’channel. © Copyright by Lato’channel
👉 Vui lòng không làm mới lại(reup)👉 Do not Reup

Комментарии

Информация по комментариям в разработке