Utilisez QTimer pour actualiser régulièrement dans PyQt5: lorsque vous souhaitez exécuter du code qui peut dépasser le temps défini

Parfois, nous devons actualiser les données régulièrement pour obtenir les dernières données, puis traiter les données.À ce stade, nous pouvons utiliser la classe QTimer dans PyQT5. Cependant, parfois nous ne savons pas combien de temps ce code s'exécutera, parfois il dépassera le temps de rafraîchissement que nous avons défini, comme self.timer.start (1000) est de 1 seconde, ou nous ne connaissons pas l'exécution du code Combien de temps. C'est un petit problème que j'ai rencontré. Commençons par le résoudre. En fait, c'est aussi très simple. Enregistrez-le, en espérant aider d'autres amis.


La

Définissez la classe QTimer

self.timer = QTimer(self)
self.timer.start(1000) #单位为毫秒
self.stop()

 Signaux de classe QTimer

self.timer.timeout.connect(self.function)    #到达设定的时间后,执行function函数
self.timer.singleShot.connect(1000, app.quit) #设置 1 秒后界面自动关闭

 Tout le code:

Principalement dans la fonction de code à long terme, augmentez avant et après:

self.timer.stop()
.........
.........
self.timer.start()

start () N'oubliez pas de ne pas ajouter de paramètres

from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QGridLayout, QLabel
from PyQt5.QtCore import QTimer
import sys class WinForm(QWidget): def __init__(self, parent=None): super(WinForm, self).__init__(parent) self.setWindowTitle("QTimer demo") self.label = QLabel('测试') self.startBtn = QPushButton('开始') self.endBtn = QPushButton('结束') layout = QGridLayout(self) # 初始化一个定时器 self.timer = QTimer(self) self.timer.timeout.connect(self.myFunction) #到达设定的时间后,执行槽函数代码 layout.addWidget(self.label, 0, 0, 1, 2) layout.addWidget(self.startBtn, 1, 0) layout.addWidget(self.endBtn, 1, 1) # 连接按键操作和槽函数 self.startBtn.clicked.connect(self.startTimer) self.endBtn.clicked.connect(self.endTimer) self.setLayout(layout) def startTimer(self): self.timer.start(5000) # 5000 单位是毫秒, 即 5 秒 self.label.setText('开始执行了-----') def endTimer(self): self.timer.stop() def myFunction(self): # for i in range(10): # self.label.setText(str(i) + ',') #如果执行该代码的时间远远超过 5 秒的话: 使用下面的方法 self.timer.stop() for i in range(100000000): #此代码远远超过 5 秒 if i % 100 == 0: print(i) self.label.setText('这是很长的代码') self.timer.start() #此时, start 中不要加任何的时间 if __name__ == "__main__": app = QApplication(sys.argv) form = WinForm() form.show() sys.exit(app.exec_())

 

Je suppose que tu aimes

Origine www.cnblogs.com/junge-mike/p/12761331.html
conseillé
Classement