向图形用户界面添加一个简单的时钟

2024-04-29 16:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码,用于一个非常通用/空白的图形用户界面,带有一些标签、按钮和一个LCD小部件。我还为一个单独的窗口编写了一些代码,它只使用一个LCD小部件来显示时间。我的问题是如何将时钟的代码插入到通用GUI代码中,使LCD小部件显示时间?在

from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber
class DigitalClock(QLCDNumber):

    def __init__(self, parent=None):
        super(DigitalClock, self).__init__(parent)
        self.setSegmentStyle(QLCDNumber.Filled)
        timer = QTimer(self)
        timer.timeout.connect(self.showTime)
        timer.start(1000)
        self.showTime()
        self.setWindowTitle("Digital Clock")
        self.resize(150, 60)

    def showTime(self):
        time = QTime.currentTime()
        text = time.toString('hh:mm')
        if (time.second() % 2) == 0:
            text = text[:2] + ' ' + text[3:]
        self.display(text)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    clock = DigitalClock()
    clock.show()
    sys.exit(app.exec_())

这是简单时钟的代码,我想把它插入到下面的代码中,让LCD小部件像这个一样显示时间:

^{pr2}$

Tags: 代码textfromimportselflcdtime部件
2条回答

简单解决方案:

假设第一个文件名为DigitalClock.py,第二个文件名为main.py,那么只需将导入添加到main.py并更改QLCDNumber创建的行:

主.py

from DigitalClock import DigitalClock
# ...
self.DigitalClock = DigitalClock(self.centralwidget) # QtWidgets.QLCDNumber(self.centralwidget)

长解:

将QLCDNumber升级为使用DigitalClock,您可以参考这个other answer的指南,在这里您可以用DigitalClock交换QVideoWidget和PyQt5.qt多媒体widgets与DigitalClock。在

另一种方法是创建一个小部件插件,以便可以直接在Qt设计器中使用。在

在数字时钟文件.py在

from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber

class DigitalClock(QLCDNumber):

    def __init__(self, parent=None):
        super(DigitalClock, self).__init__(parent)
        self.setSegmentStyle(QLCDNumber.Filled)
        self.setDigitCount(10)
        timer = QTimer(self)
        timer.timeout.connect(self.showTime)
        timer.start(1000)
        self.showTime()
        self.setWindowTitle("Digital Clock")
        self.resize(150, 60)

    def showTime(self):
        time = QTime.currentTime()
        text = time.toString('hh:mm:ss')
        if (time.second() % 2) == 0:
            text = text[:2] + ' ' + text[3:5]+' '+text[6:]
        self.display(text)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    clock = DigitalClock()
    clock.show()
    sys.exit(app.exec_())

在生成UI.py(来自QtDesigner)

^{pr2}$

在主.py在

from DigitalClockFile import DigitalClock
from generatedUI import Ui_mainWindow
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber
from PyQt5 import QtWidgets,QtCore


class transformedUI(Ui_mainWindow):
    def __init__(self):
        super(transformedUI,self).__init__()
    def setupUi(self,mainWindow):
        super(transformedUI,self).setupUi(mainWindow)
        self.DigitalClock=DigitalClock(self.centralwidget)
        self.DigitalClock.setGeometry(QtCore.QRect(110, 190, 200, 100))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = QtWidgets.QMainWindow()
    ui = transformedUI()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())

把这三个文件都加起来目录。自从您已经实现了DigitalClock,不要在这个UI中添加时钟,只需继承QtDEsigner生成的类,并将您的时钟添加到继承的变形金刚.py只需运行主.py会达到预期的效果任务。希望这有帮助

相关问题 更多 >