PyQt5 QThread倒計(jì)時(shí)功能的實(shí)現(xiàn)代碼
1.創(chuàng)建多線程類
全局變量 sec
class work_thread(QThread):
timer = pyqtSignal() # 每隔一秒發(fā)送信號(hào)
end = pyqtSignal() # 計(jì)數(shù)完成發(fā)送信號(hào)
def run(self) -> None:
while True:
self.sleep(1)
if sec == 0:
self.end.emit() # 發(fā)送end信號(hào)
break
self.timer.emit()
2.實(shí)例化線程類,綁定計(jì)數(shù),技術(shù)結(jié)束事件
self.label.setText("20")
global sec
sec = 20
self.work_thread = work_thread()
self.work_thread.timer.connect(self.count_time)
self.work_thread.end.connect(self.end)
3.綁定開始按鈕事件
self.pushButton.clicked.connect(self.start)
4.事件方法
def count_time(self):
global sec
sec = int(self.label.text())
sec -= 1
self.label.setText(str(sec))
def end(self):
self.statusbar.showMessage("計(jì)數(shù)停止")
def start(self):
self.work_thread.start() # 啟動(dòng)線程
PS:知識(shí)點(diǎn)擴(kuò)展
PyQt5 倒計(jì)時(shí)按鈕功能實(shí)現(xiàn)
"""
這個(gè)例子中我們實(shí)現(xiàn)了兩個(gè)功能:菜單按鈕、帶倒計(jì)時(shí)的按鈕(賬戶注冊(cè)的時(shí)候經(jīng)常會(huì)碰到)。
"""
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QMenu
from PyQt5.QtCore import QTimer
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(400,300)
self.setWindowTitle('早點(diǎn)畢業(yè)吧--按鈕(QPushButton)')
bt1 = QPushButton("這是什么",self)
bt1.move(50,50)
self.bt2 = QPushButton('發(fā)送驗(yàn)證碼',self)
self.bt2.move(200,50)
"""
設(shè)置菜單按鈕其實(shí)很簡(jiǎn)單,首先我們新建一個(gè)QMenu對(duì)象。這里的addSeparator(),其實(shí)就是給菜單增加一個(gè)分隔符。
"""
menu = QMenu(self)
menu.addAction('我是')
menu.addSeparator()
menu.addAction('世界上')
menu.addSeparator()
menu.addAction('最帥的')
bt1.setMenu(menu)#然后將這個(gè)菜單添加到QPushButton對(duì)象中
"""
第二個(gè)例子,我們使用到QTimer這個(gè)類,我們前面很多次都用到了這個(gè)和時(shí)間相關(guān)的類。后面會(huì)專門的講解的。
QTimer類提供重復(fù)性和單次定時(shí)器。QTimer類為定時(shí)器提供高級(jí)編程接口。要使用它,請(qǐng)創(chuàng)建一個(gè)QTimer,將其timeout()信號(hào)連接到相應(yīng)的插槽,然后調(diào)用start()。從此以后,它將以固定的時(shí)間間隔發(fā)出timeout()信號(hào)。
setInterval()該屬性擁有以毫秒為單位的超時(shí)時(shí)間間隔。此屬性的默認(rèn)值為0。
"""
self.count = 10
self.bt2.clicked.connect(self.Action)
self.time = QTimer(self)
self.time.setInterval(1000)
self.time.timeout.connect(self.Refresh)
self.show()
"""
我們單擊按鈕后,進(jìn)行判斷若按鈕沒有被禁用,則激活定時(shí)器,同時(shí)將按鈕禁用,即禁止點(diǎn)擊。
"""
def Action(self):
if self.bt2.isEnabled():
self.time.start()
self.bt2.setEnabled(False)
"""
進(jìn)入超時(shí)狀態(tài)后,我們開始倒計(jì)時(shí)。同時(shí)讓按鈕上的文字不斷的在變化。
當(dāng)?shù)褂?jì)時(shí)完成的時(shí)候,我們停止定時(shí)器。將按鈕恢復(fù)成正常的狀態(tài)。同時(shí)重置倒計(jì)時(shí)的值,為下次的使用做好準(zhǔn)備。
"""
def Refresh(self):
if self.count > 0:
self.bt2.setText(str(self.count)+'秒后重發(fā)')
self.count -= 1
else:
self.time.stop()
self.bt2.setEnabled(True)
self.bt2.setText('發(fā)送驗(yàn)證碼')
self.count = 10
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
到此這篇關(guān)于PyQt5 QThread倒計(jì)時(shí)的文章就介紹到這了,更多相關(guān)PyQt5 QThread倒計(jì)時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 爬蟲出現(xiàn)403禁止訪問錯(cuò)誤詳解
這篇文章主要介紹了 python 爬蟲解決403禁止訪問錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2017-03-03
python解釋模型庫Shap實(shí)現(xiàn)機(jī)器學(xué)習(xí)模型輸出可視化
Shap 是一個(gè)開源的 python 庫,用于解釋模型。它可以創(chuàng)建多種類型的可視化,有助于了解模型和解釋模型是如何工作的。在本文中,我們將會(huì)分享一些Shap創(chuàng)建的不同類型的機(jī)器學(xué)習(xí)模型可視化2021-11-11
Python復(fù)制文件的9個(gè)方法小結(jié)
本文主要介紹了Python復(fù)制文件的9個(gè)方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例
這篇文章主要介紹了Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python?Pandas刪除替換并提取其中的缺失值NaN(dropna,fillna,isnull)
這篇文章主要給大家介紹了關(guān)于Python?Pandas刪除替換并提取其中的缺失值NaN(dropna,fillna,isnull)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Pandas具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
Python設(shè)計(jì)足球聯(lián)賽賽程表程序的思路與簡(jiǎn)單實(shí)現(xiàn)示例
足球聯(lián)賽的賽制就是一支隊(duì)伍在一個(gè)賽季中主客場(chǎng)分別面對(duì)聯(lián)賽中除了自身以外的球隊(duì)一次,對(duì)此我們可以使用一種循環(huán)算法來實(shí)現(xiàn),接下來就一起來看一下Python設(shè)計(jì)足球聯(lián)賽賽程表程序的思路與簡(jiǎn)單實(shí)現(xiàn)示例:2016-06-06
Python的PIL庫中g(shù)etpixel方法的使用
這篇文章主要介紹了Python的PIL庫中g(shù)etpixel方法的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
將Python項(xiàng)目打包成exe并附帶下載功能的操作流程
這篇文章主要為大家詳細(xì)介紹了將Python項(xiàng)目打包成exe并附帶下載功能的操作流程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2023-12-12
零基礎(chǔ)寫python爬蟲之爬蟲的定義及URL構(gòu)成
俗話說工欲善其事必先利其器,作為本系列文章的第一篇,我們同樣也需要先利其器,先把爬蟲的定義以及寫爬蟲所需要的基礎(chǔ)知識(shí)先介紹給大家。2014-11-11

