PyQt4 标签不显示

PyQt4 Label not showing

我是 PyQt4 的新手,这个问题可能很简单,但我尝试了很多不同的方法,但没有任何效果。我正在尝试在 PyQt4 中制作标签。

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())

标签未显示,也没有错误消息。我做错了什么?

我使用 PySide 而不是 Qt,但它们应该是 99.99% 兼容的。主要问题是您调用了 show() 函数,这使得 window 可见。您有两次调用 show。第一次调用时,您还没有调用 MainDisplay,所以 QLabel 还没有创建。第二次调用 show 时,window 已经 可见,因此没有任何变化。

如果您先创建小部件并调用 show 一次,最后它将按您想要的方式工作。使用此代码,标签显示出来。

还有其他问题:

您必须将导入语句改回原样。

我没有你的时间class,所以我只是在标签中写了一段简单的文字。

函数ShowFullScreen应该是showFullScreen

在 QtApp 中运行事件循环的函数被命名为 exec_ 而不是 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_())