PyQt4标签没有显示

时间:2017-09-15 23:18:35

标签: python oop pyqt4

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

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

1 个答案:

答案 0 :(得分:1)

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

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

还有其他问题:

您必须以您拥有它们的方式更改导入语句。

我没有你的Time课程,所以我只是在标签上写了一段简单的文字。

函数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_())