在PyQt4中更新数字时钟小部件的问题 - 调用插槽和信号

时间:2016-07-16 23:25:04

标签: python-3.x pyqt pyqt4

好的,这是我上一篇文章的编辑版本。我正在尝试将数字时钟放在主窗口上。我无法更新价值。我看到一个教程1在另一个类中使用@pyqtSlot()调用了一个方法,但由于我在主窗口类中工作,我无法调用它,并且时钟根本没有出现。下面的代码显示当前时间,但时钟未更新:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

class Window(QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50,50,500,300)
        self.home()

    def home(self):

        lcdNumber = QLCDNumber(self)
        timer = QTimer()
        lcdNumber.setDigitCount(8)
        self.showTime(lcdNumber)
        lcdNumber.connect(timer,SIGNAL("timeout()"),lcdNumber,SLOT("showTime()"))
        timer.start(1000)
        self.show()


    @pyqtSlot()
    def showTime(self,lcdNumber):
        lcdNumber.display(QTime.currentTime().toString("hh:mm:ss"))


def run():    
        app=QApplication(sys.argv)
        GUI = Window()
        sys.exit(app.exec_())

run()

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了一些使用我发现here的代码的工作,但我仍然不确定如何使信号和插槽功能正常运行。

from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

from time import strftime

class Window(QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50,50,700,300)
        self.home()

    def home(self):

        self.timer =QTimer(self)
        self.timer.timeout.connect(self.Time)
        self.timer.start(1000)

        self.lcd = QLCDNumber(self)
        self.lcd.display(strftime("%H"+":"+"%M"+":"+"%S"))
        self.lcd.setDigitCount(8)

        self.show()

    def Time(self):
        self.lcd.display(strftime("%H"+":"+"%M"+":"+"%S"))     


def run():    
        app=QApplication(sys.argv)
        GUI = Window()
        sys.exit(app.exec_())

run()