PyQT4 日期时间部件
PyQT4 Datetime widget
我正在使用 PyQt4 制作一个应用程序,在 window 它们是一个日期时间标签(实时更新)。我不想将此标签与其他两个 QLabel 一起放入 Hboxlayout 中。使用此代码:
import sys,os
from PyQt4 import QtGui,QtCore
from label_datetime import *
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.main_widget = QtGui.QWidget(self)
layout=QtGui.QGridLayout(self.main_widget)
layout.setSpacing(10)
self.datetime=label_datetime()
self.linkertitel=QtGui.QLabel('Uurbasis')
self.rechtertitel=QtGui.QLabel('Dagbasis')
qf=QtGui.QFont("Arial",20)
self.linkertitel.setFont(qf)
self.rechtertitel.setFont(qf)
self.rechtertitel.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
self.linkertitel.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
self.linkertitel.setAlignment(QtCore.Qt.AlignCenter)
self.rechtertitel.setAlignment(QtCore.Qt.AlignCenter)
layout_titel=QtGui.QHBoxLayout()
layout_titel.addWidget(self.linkertitel)
layout_titel.addWidget(self.datetime)
layout_titel.addWidget(self.rechtertitel)
self.groep_titel=QtGui.QGroupBox()
self.groep_titel.setLayout(layout_titel)
layout.addWidget(self.groep_titel,1,1,1,10)
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self, self.close)
qApp = QtGui.QApplication(sys.argv)
aw = ApplicationWindow()
aw.setWindowTitle("my app")
aw.showFullScreen()
aw.show()
sys.exit(qApp.exec_())
我的 label_datetime 代码:
from PyQt4 import QtGui,QtCore
from PyQt4.Qt import QFont, QColor
class label_datetime(QtGui.QWidget):
def __init__(self):
super(label_datetime,self).__init__()
self.label = QtGui.QLabel('tijd',self)
qf=QtGui.QFont("Arial",20)
self.label.setFont(qf)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.adjustSize()
self.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
timer=QtCore.QTimer(self)
timer.timeout.connect(self.displaytime)
timer.start(1000)
self.show()
def displaytime(self):
tijd=QtCore.QDateTime.currentDateTime().toString()
self.label.setText(QtCore.QDateTime.currentDateTime().toString())
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.adjustSize()
我希望三个标签位于给定 space 的中心。但是这个日期时间标签不想调整大小。结果是这样的:
如果我删除 self.label.adjustSize(),并添加:self.label.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding),Qlabel 会缩小并且只有一半的日期是 visibe.The 我的日期时间标签的大小不想改变。有人知道我做错了什么吗?
问题是您期望 QtGui.Widget
表现得像 QtGui.QLabel
,您的 label_datetame
class 不是 QLabel
,而是 QWidget
因为它继承自它。
您应该从 QLabel
继承您的 class 以便允许其他小部件(QLayout
、QWindow
等...)"talk"它 "QLabel languaje"。 QLabel
具有 QWidget
没有的功能、方法和属性。
将您的 class 更改为:
class label_datetime(QtGui.QLabel):
def __init__(self, parent=None):
super(label_datetime,self).__init__(parent)
qf = QtGui.QFont("Arial", 20)
self.setFont(qf)
self.setAlignment(QtCore.Qt.AlignCenter)
self.adjustSize()
self.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
timer = QtCore.QTimer(self)
timer.timeout.connect(self.displaytime)
timer.start(1000)
self.show()
def displaytime(self):
tijd = QtCore.QDateTime.currentDateTime().toString()
self.setText(QtCore.QDateTime.currentDateTime().toString())
self.setAlignment(QtCore.Qt.AlignCenter)
self.adjustSize()
我正在使用 PyQt4 制作一个应用程序,在 window 它们是一个日期时间标签(实时更新)。我不想将此标签与其他两个 QLabel 一起放入 Hboxlayout 中。使用此代码:
import sys,os
from PyQt4 import QtGui,QtCore
from label_datetime import *
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.main_widget = QtGui.QWidget(self)
layout=QtGui.QGridLayout(self.main_widget)
layout.setSpacing(10)
self.datetime=label_datetime()
self.linkertitel=QtGui.QLabel('Uurbasis')
self.rechtertitel=QtGui.QLabel('Dagbasis')
qf=QtGui.QFont("Arial",20)
self.linkertitel.setFont(qf)
self.rechtertitel.setFont(qf)
self.rechtertitel.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
self.linkertitel.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
self.linkertitel.setAlignment(QtCore.Qt.AlignCenter)
self.rechtertitel.setAlignment(QtCore.Qt.AlignCenter)
layout_titel=QtGui.QHBoxLayout()
layout_titel.addWidget(self.linkertitel)
layout_titel.addWidget(self.datetime)
layout_titel.addWidget(self.rechtertitel)
self.groep_titel=QtGui.QGroupBox()
self.groep_titel.setLayout(layout_titel)
layout.addWidget(self.groep_titel,1,1,1,10)
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self, self.close)
qApp = QtGui.QApplication(sys.argv)
aw = ApplicationWindow()
aw.setWindowTitle("my app")
aw.showFullScreen()
aw.show()
sys.exit(qApp.exec_())
我的 label_datetime 代码:
from PyQt4 import QtGui,QtCore
from PyQt4.Qt import QFont, QColor
class label_datetime(QtGui.QWidget):
def __init__(self):
super(label_datetime,self).__init__()
self.label = QtGui.QLabel('tijd',self)
qf=QtGui.QFont("Arial",20)
self.label.setFont(qf)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.adjustSize()
self.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
timer=QtCore.QTimer(self)
timer.timeout.connect(self.displaytime)
timer.start(1000)
self.show()
def displaytime(self):
tijd=QtCore.QDateTime.currentDateTime().toString()
self.label.setText(QtCore.QDateTime.currentDateTime().toString())
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.adjustSize()
我希望三个标签位于给定 space 的中心。但是这个日期时间标签不想调整大小。结果是这样的:
如果我删除 self.label.adjustSize(),并添加:self.label.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding),Qlabel 会缩小并且只有一半的日期是 visibe.The 我的日期时间标签的大小不想改变。有人知道我做错了什么吗?
问题是您期望 QtGui.Widget
表现得像 QtGui.QLabel
,您的 label_datetame
class 不是 QLabel
,而是 QWidget
因为它继承自它。
您应该从 QLabel
继承您的 class 以便允许其他小部件(QLayout
、QWindow
等...)"talk"它 "QLabel languaje"。 QLabel
具有 QWidget
没有的功能、方法和属性。
将您的 class 更改为:
class label_datetime(QtGui.QLabel):
def __init__(self, parent=None):
super(label_datetime,self).__init__(parent)
qf = QtGui.QFont("Arial", 20)
self.setFont(qf)
self.setAlignment(QtCore.Qt.AlignCenter)
self.adjustSize()
self.setStyleSheet('color: #d3d3d3; border:1px solid rgb(0, 255, 0)')
timer = QtCore.QTimer(self)
timer.timeout.connect(self.displaytime)
timer.start(1000)
self.show()
def displaytime(self):
tijd = QtCore.QDateTime.currentDateTime().toString()
self.setText(QtCore.QDateTime.currentDateTime().toString())
self.setAlignment(QtCore.Qt.AlignCenter)
self.adjustSize()