首先我们需要明确以下概念:
线程:主要用于解决耗时操作导致界面卡死问题,而且多个线程可以协同作用于某个任务,这个在C++/java/C#等编程都有这个概念,其重要性不言而喻,也就是必须要掌握一个知识点
线程锁:通常用于多个线程共享一个变量的读写,防止读写同时发生造成程序崩溃
回调:通常一个耗时操作我们怎么知道耗时进度是多少,比如pyqt5界面点击按钮开始,但是开始后的事件是非常耗时操作,怎么把这个耗时进度实时传递到界面来?我们通过回调函数,也可以通过信号和槽函数来实现这个过程。因此回调函数和信号槽函数对于反馈实时进度非常有帮助
下面通过简单例子掌握里面基本用法
from PyQt5.Qt import QApplication, QWidget, QPushButton, QThread, QMutex, pyqtSignal
import sys
import time
qmut_1 = QMutex() # 创建线程锁
qmut_2 = QMutex()
# 继承QThread
class Thread_1(QThread): # 线程1
def __init__(self):
super().__init__()
def run(self):
qmut_1.lock() # 加锁
values = [1, 2, 3, 4, 5]
for i in values:
print(i)
time.sleep(0.5) # 休眠
qmut_1.unlock() # 解锁
class Thread_2(QThread): # 线程2
_signal = pyqtSignal()
def __init__(self):
super().__init__()
def run(self):
# qmut_2.lock() # 加锁
values = ["a", "b", "c", "d", "e"]
for i in values:
print(i)
time.sleep(0.5)
# qmut_2.unlock() # 解锁
self._signal.emit()
class MyWin(QWidget):
def __init__(self):
super().__init__()
# 按钮初始化
self.btn_1 = QPushButton('按钮1', self)
self.btn_1.move(120, 80)
self.btn_1.clicked.connect(self.click_1) # 绑定槽函数
self.btn_2 = QPushButton('按钮2', self)
self.btn_2.move(120, 120)
self.btn_2.clicked.connect(self.click_2) # 绑定槽函数
def click_1(self):
self.thread_1 = Thread_1() # 创建线程
self.thread_1.start() # 开始线程
def click_2(self):
self.btn_2.setEnabled(False)
self.thread_2 = Thread_2()
self.thread_2._signal.connect(self.set_btn)
self.thread_2.start()
def set_btn(self):
self.btn_2.setEnabled(True)
if __name__ == "__main__":
app = QApplication(sys.argv)
myshow = MyWin()
myshow.show()
sys.exit(app.exec_())
早期唐筛是检查什么 | 右脸突然肿了是什么原因 | 串联质谱筛查是什么病 | funfair是什么意思 | 心理卫生科看什么病的 |
黄山四绝指的是什么 | 狗喜欢吃什么 | 晚上看到黄鼠狼什么预兆 | 巩固是什么意思 | 10月19日什么星座 |
牙齿发白是什么原因 | 高血脂不能吃什么 | 外聘是什么意思 | 直肠指检能检查出什么 | 糖尿病是什么原因造成的 |
疑虑是什么意思 | 外传是什么意思 | 什么眉什么眼 | 无极是什么意思 | 记吃不记打的下一句是什么 |
老公生日送什么礼物hcv8jop2ns0r.cn | 宋威龙什么星座cl108k.com | 空调的几匹是什么意思hcv9jop4ns2r.cn | 睡着了流口水是什么原因imcecn.com | vans属于什么档次hcv8jop4ns6r.cn |
什么佛面tiangongnft.com | 心机血缺血是什么症状hcv7jop9ns8r.cn | 护照和签证有什么区别hcv9jop3ns4r.cn | 宫外孕做什么手术hcv8jop0ns0r.cn | 鼻窦炎有什么症状表现hcv7jop4ns7r.cn |
唐筛都检查什么hcv8jop8ns5r.cn | 来月经腰酸腰痛什么原因造成的hcv8jop0ns2r.cn | 为什么会突然不爱了hcv8jop7ns4r.cn | 肾的功能是什么hcv9jop0ns5r.cn | 有头皮屑用什么洗发水hcv8jop1ns1r.cn |
减肥吃什么菜最好aiwuzhiyu.com | 送钱包的寓意是什么xjhesheng.com | 小孩胃疼吃什么药好hcv8jop4ns5r.cn | 世界上最大的鱼是什么鱼hcv7jop9ns5r.cn | 月和什么有关hcv8jop0ns9r.cn |