2017-09-15 2 views
0

Ich bin sehr neu zu PyQt4 und diese Frage ist wahrscheinlich sehr einfach, aber ich habe viele verschiedene Dinge ausprobiert und nichts funktioniert. Ich versuche ein Label in PyQt4 zu erstellen.PyQt4 Etikett nicht angezeigt

import sys 
from PyQt4 import QtCore 
from PyQt4 import QtGui 

class Display(QtGui.QWidget): 
    def __init__(self): 
     super(Display, self).__init__() 
     self.time = Time()  #Another class in the program 
     self.ShowFullScreen() 
     self.setStyleSheet("background-color: black;") 
     self.show() 
     self.MainDisplay() 

    def MainDisplay(self): 
     self.timedisplay = QtGui.QLabel(self) 
     self.timedisplay.setStyleSheet("font: 30pt Helvetica; color: white;") 
     self.timedisplay.setText(time.GetTime()) 
     self.show() 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    GUI = Display() 
    sys.exit(app.exec()) 

Das Etikett nicht zu sehen, und es gibt keine Fehlermeldung. Was mache ich falsch?

Antwort

1

Ich verwende PySide und nicht Qt, aber sie sollen zu 99,99% kompatibel sein. Das Hauptproblem ist Ihr Aufruf an die show()-Funktion, die das Fenster sichtbar macht. Sie haben zwei Anrufe an show. Beim ersten Aufruf haben Sie MainDisplay noch nicht aufgerufen, so dass die QLabel noch nicht erstellt wurde. Beim zweiten Aufruf show ist das Fenster bereits sichtbar, so dass sich nichts ändert.

Wenn Sie die Widgets zuerst erstellen und show einmal aufrufen, wird es am Ende funktionieren, wie Sie möchten. Mit diesem Code erscheint das Etikett.

Es gibt noch andere Probleme:

Sie werden die Import-Anweisungen die Art und Weise ändern müssen, sichern Sie sie hatte.

Ich hatte nicht Ihre Zeit Klasse, also schrieb ich nur ein einfaches Stück Text in das Etikett. Die Funktion ShowFullScreen sollte showFullScreen sein. Die Funktion, die die Ereignisschleife in QtApp ausführt, heißt exec_ und nicht exec.

import sys 
from PySide import QtCore 
from PySide import QtGui 

class Display(QtGui.QWidget): 
    def __init__(self): 
     super(Display, self).__init__() 
     self.setStyleSheet("background-color: black;") 
     self.MainDisplay() 
     self.showFullScreen() 

    def MainDisplay(self): 
     self.timedisplay = QtGui.QLabel(self) 
     self.timedisplay.setStyleSheet("font: 30pt Helvetica; color: white;") 
     self.timedisplay.setText("What time is it now?") 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    GUI = Display() 
    sys.exit(app.exec_()) 
+0

Es gibt keine 'ShowFullScreen()' aber wenn es 'showFullScreen()' – eyllanesc

+0

Danke, ich war faul. Ich werde bearbeiten. –

+0

Die Verwendung von 'show()' und 'showFullScreen()' oft ist unnötig, nur der letzte dieser Befehle ist wirksam – eyllanesc