我对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())
标签没有显示,并且没有错误消息。我做错了什么?
答案 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_())