2016-07-16 7 views
0

Ok, dies ist eine bearbeitete Version meines früheren Beitrags. Ich versuche, eine digitale Uhr auf ein Home-Fenster zu platzieren. Ich habe Schwierigkeiten, den Wert zu aktualisieren. Ich sah ein Tutorial 1, das eine Methode mit @pyqtSlot() in einer anderen Klasse aufgerufen hat, aber weil ich in der Hauptfensterklasse arbeite, konnte ich dies nicht aufrufen und die Uhr erschien gar nicht. Der folgende Code unten bringt die aktuelle Zeit, aber die Uhr wird nicht aktualisiert:Probleme beim Aktualisieren der digitalen Uhr Widget in PyQt4 - Aufruf von Slot und Signal

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys 

class Window(QMainWindow): 

    def __init__(self): 
     super(Window, self).__init__() 
     self.setGeometry(50,50,500,300) 
     self.home() 

    def home(self): 

     lcdNumber = QLCDNumber(self) 
     timer = QTimer() 
     lcdNumber.setDigitCount(8) 
     self.showTime(lcdNumber) 
     lcdNumber.connect(timer,SIGNAL("timeout()"),lcdNumber,SLOT("showTime()")) 
     timer.start(1000) 
     self.show() 


    @pyqtSlot() 
    def showTime(self,lcdNumber): 
     lcdNumber.display(QTime.currentTime().toString("hh:mm:ss")) 


def run():  
     app=QApplication(sys.argv) 
     GUI = Window() 
     sys.exit(app.exec_()) 

run() 

Antwort

1

Ok, damit ich eine Arbeit um mit etwas Code fand ich here gefunden, aber ich bin immer noch nicht sicher, wie die Signal- und Slot bekommen Funktionen Betrieb .

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys 

from time import strftime 

class Window(QMainWindow): 

    def __init__(self): 
     super(Window, self).__init__() 
     self.setGeometry(50,50,700,300) 
     self.home() 

    def home(self): 

     self.timer =QTimer(self) 
     self.timer.timeout.connect(self.Time) 
     self.timer.start(1000) 

     self.lcd = QLCDNumber(self) 
     self.lcd.display(strftime("%H"+":"+"%M"+":"+"%S")) 
     self.lcd.setDigitCount(8) 

     self.show() 

    def Time(self): 
     self.lcd.display(strftime("%H"+":"+"%M"+":"+"%S"))  


def run():  
     app=QApplication(sys.argv) 
     GUI = Window() 
     sys.exit(app.exec_()) 

run() 
+0

Ihre Lösung hier ist völlig richtig - ich würde es sicherlich nicht als "Umgehen" beschreiben. Der Grund, warum es funktioniert (im Vergleich zum ursprünglichen Beispiel), ist, weil es Verweise auf "LCD" und "Timer" enthält. Es ist auch gut, dass Sie alte Signal- und Slot-Verbindungen (die sehr fehleranfällig sein können) vermieden haben. – ekhumoro

+0

@ekhumoro Vielen Dank für Ihren Kommentar, dieser Ansatz scheint auch viel einfacher, derjenige, nach dem ich gefragt habe. – alkey