校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PyQt5 QThread倒計時功能的實現代碼

PyQt5 QThread倒計時功能的實現代碼

熱門標簽:原裝電話機器人 千陽自動外呼系統 工廠智能電話機器人 在哪里辦理400電話號碼 400電話申請服務商選什么 江蘇客服外呼系統廠家 西藏智能外呼系統五星服務 清遠360地圖標注方法 平頂山外呼系統免費

1.創建多線程類
全局變量 sec

class work_thread(QThread):
 timer = pyqtSignal() # 每隔一秒發送信號
 end = pyqtSignal() # 計數完成發送信號

 def run(self) -> None:
  while True:
   self.sleep(1)
   if sec == 0:
    self.end.emit() # 發送end信號
    break
   self.timer.emit()

2.實例化線程類,綁定計數,技術結束事件

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("計數停止")

def start(self):
 self.work_thread.start() # 啟動線程

PS:知識點擴展

PyQt5 倒計時按鈕功能實現

"""
這個例子中我們實現了兩個功能:菜單按鈕、帶倒計時的按鈕(賬戶注冊的時候經常會碰到)。
"""
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('早點畢業吧--按鈕(QPushButton)')

    bt1 = QPushButton("這是什么",self)
    bt1.move(50,50)

    self.bt2 = QPushButton('發送驗證碼',self)
    self.bt2.move(200,50)
    """
設置菜單按鈕其實很簡單,首先我們新建一個QMenu對象。這里的addSeparator(),其實就是給菜單增加一個分隔符。
    """
    menu = QMenu(self)
    menu.addAction('我是')
    menu.addSeparator()
    menu.addAction('世界上')
    menu.addSeparator()
    menu.addAction('最帥的')

    bt1.setMenu(menu)#然后將這個菜單添加到QPushButton對象中
    """
第二個例子,我們使用到QTimer這個類,我們前面很多次都用到了這個和時間相關的類。后面會專門的講解的。
QTimer類提供重復性和單次定時器。QTimer類為定時器提供高級編程接口。要使用它,請創建一個QTimer,將其timeout()信號連接到相應的插槽,然后調用start()。從此以后,它將以固定的時間間隔發出timeout()信號。
setInterval()該屬性擁有以毫秒為單位的超時時間間隔。此屬性的默認值為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()
    """
我們單擊按鈕后,進行判斷若按鈕沒有被禁用,則激活定時器,同時將按鈕禁用,即禁止點擊。
    """
  def Action(self):
    if self.bt2.isEnabled():
      self.time.start()
      self.bt2.setEnabled(False)
    """
進入超時狀態后,我們開始倒計時。同時讓按鈕上的文字不斷的在變化。
當倒計時完成的時候,我們停止定時器。將按鈕恢復成正常的狀態。同時重置倒計時的值,為下次的使用做好準備。 
    """
  def Refresh(self):
    if self.count > 0:
      self.bt2.setText(str(self.count)+'秒后重發')
      self.count -= 1
    else:
      self.time.stop()
      self.bt2.setEnabled(True)
      self.bt2.setText('發送驗證碼')
      self.count = 10

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

到此這篇關于PyQt5 QThread倒計時的文章就介紹到這了,更多相關PyQt5 QThread倒計時內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python GUI庫圖形界面開發之PyQt5線程類QThread詳細使用方法
  • PyQt5中多線程模塊QThread使用方法的實現
  • pyqt5中QThread在使用時出現重復emit的實例
  • 詳解pyqt5 動畫在QThread線程中無法運行問題

標簽:股票 西安 日照 錦州 隨州 天水 安慶 白城

巨人網絡通訊聲明:本文標題《PyQt5 QThread倒計時功能的實現代碼》,本文關鍵詞  PyQt5,QThread,倒計時,功能,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PyQt5 QThread倒計時功能的實現代碼》相關的同類信息!
  • 本頁收集關于PyQt5 QThread倒計時功能的實現代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 乳源| 米林县| 凌源市| 永平县| 九龙城区| 塔城市| 静海县| 华容县| 布拖县| 竹北市| 营山县| 安丘市| 台安县| 米林县| 阆中市| 福鼎市| 峨边| 上犹县| 岑巩县| 富阳市| 贵德县| 天镇县| 夏邑县| 永福县| 石景山区| 沧州市| 墨玉县| 张家界市| 罗源县| 巴林左旗| 乡城县| 巴彦县| 肥东县| 邵武市| 桃江县| 民勤县| 黑山县| 山东| 梁平县| 金堂县| 新安县|