N'est-ce pas ce que fait le mécanisme de slot de signal de PyQt ? La zone de saisie que vous souhaitez saisir, comme LineEdit, correspond à un slot. Un signal est envoyé au lieu de traitement, et PyQt fait le reste. La liaison ne nécessite pas d'appels de fonction spécifiques et le code semble beaucoup plus propre Dans l'exemple suivant, BackendThread simule un thread en arrière-plan une fois les données traitées, elles sont mises à jour au premier plan et actualisées toutes les secondes. propre logique
# -*- coding: utf-8 -*-
from PyQt4.Qt import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import time
class Backend(QThread):
update_date = pyqtSignal(QString)
def run(self):
while True:
data = QDateTime.currentDateTime()
self.update_date.emit(QString(str(data)))
time.sleep(1)
class Window(QDialog):
def __init__(self):
QDialog.__init__(self)
self.resize(400, 100)
self.input = QLineEdit(self)
self.input.resize(400, 100)
def handleDisplay(self, data):
self.input.setText(data)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
b = Backend()
w = Window()
b.update_date.connect(w.handleDisplay)
b.start()
w.show()
app.exec_()
Définissez une variable globale et écrivez le numéro de ligne actuel dans la variable lors de la lecture Le programme planifié met régulièrement à jour la valeur sur l'interface (prenez la variable globale)
C'est la méthode la plus simple et la plus grossière
Une autre méthode consiste à s'exécuter de manière asynchrone lors de la lecture et à mettre à jour directement le nombre de lignes dans l'interface
N'est-ce pas ce que fait le mécanisme de slot de signal de PyQt ? La zone de saisie que vous souhaitez saisir, comme LineEdit, correspond à un slot. Un signal est envoyé au lieu de traitement, et PyQt fait le reste. La liaison ne nécessite pas d'appels de fonction spécifiques et le code semble beaucoup plus propre
Dans l'exemple suivant, BackendThread simule un thread en arrière-plan une fois les données traitées, elles sont mises à jour au premier plan et actualisées toutes les secondes. propre logique
Définissez une variable globale et écrivez le numéro de ligne actuel dans la variable lors de la lecture
Le programme planifié met régulièrement à jour la valeur sur l'interface (prenez la variable globale)
C'est la méthode la plus simple et la plus grossière
Une autre méthode consiste à s'exécuter de manière asynchrone lors de la lecture et à mettre à jour directement le nombre de lignes dans l'interface