【问题标题】:PyQT4 Datetime widgetPyQT4 日期时间小部件
【发布时间】:2015-07-15 04:08:15
【问题描述】:

我正在使用 PyQt4 制作一个应用程序,在窗口上它们是一个日期时间标签(实时更新)。我不想将此标签与其他两个 QLabels 一起放入 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()

我希望三个标签位于给定空间的中心。但是这个日期时间标签不想调整大小。结果是这样的:

如果我删除 self.label.adjustSize(),并添加:self.label.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding),Qlabel 会缩小,只有一半的日期是可见的。大小我的日期时间标签不想改变。有人知道我在做什么错吗?

【问题讨论】:

    标签: python pyqt pyqt4


    【解决方案1】:

    问题是您期望QtGui.Widget 的行为类似于QtGui.QLabel,您的label_datetame 类不是QLabel,而是QWidget,因为它继承自它。

    您应该从QLabel 继承您的类,以便允许其他小部件(QLayoutQWindow 等...)与它“交谈”“QLabel languaje”。 QLabel 具有 QWidget 没有的函数、方法和属性。

    把你的班级改成这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-23
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多