Таймер Python с кнопкой Qt Design и номером ЖК-дисплея

Использование Qt Designer и python2.7. Я пытаюсь создать таймер «подсчета» из кнопки Qt Designer и номера ЖК-дисплея. Я хотел бы, чтобы одна кнопка запускала и сбрасывала таймер, а на ЖК-дисплее отображалось количество времени, прошедшее в формате чч: мм: сс. Я также пытаюсь сделать всплывающее окно через 40 минут и отобразить сообщение «Хорошая работа, вы сделали это!»

Я искал ответы, пробовал много разных комбинаций поиска в Google... и теперь все мои результаты отображаются фиолетовым цветом (я уже перешел по ссылке)! LOL Я вижу много примеров на других языках и для таймеров обратного отсчета и, кажется, для любых других и всех других комбинаций таймеров и языков... но ни одного для python! Серьезно, я пытался понять это в течение нескольких дней, и у меня ничего не получилось.

Ниже приведен код, который у меня есть. Я думаю, что мне нужна остальная часть функции/метода «def doStartReset(self):».

Надеюсь, я достаточно ясно выразился. Спасибо!

#!/usr/bin/python2.7
import sys
from PyQt4 import QtGui,QtCore
from timer_ui import *

class MyForm(QtGui.QMainWindow):
        def __init__(self, parent=None):
                #build parent user interface
                QtGui.QWidget.__init__(self, parent)
                self.ui = Ui_MainWindow()
                self.ui.setupUi(self)

                QtCore.QObject.connect(self.ui.btnStartReset, QtCore.SIGNAL('clicked()'), self.doStartReset)

        def doStartReset(self):



if __name__ == "__main__":
        #This function means this was run directly, not called from another python  file.
        app = QtGui.QApplication(sys.argv)
        myapp = MyForm()
        myapp.show()
        sys.exit(app.exec_())

Вот код графического интерфейса в формате _ui.py, если он вам нужен.

# -*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(340, 205)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.widget = QtGui.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(40, 50, 261, 81))
        self.widget.setObjectName(_fromUtf8("widget"))
        self.gridLayout = QtGui.QGridLayout(self.widget)
        self.gridLayout.setMargin(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.btnStartReset = QtGui.QPushButton(self.widget)
        self.btnStartReset.setObjectName(_fromUtf8("btnStartReset"))
        self.gridLayout.addWidget(self.btnStartReset, 0, 0, 1, 1)
        self.lcd40MinTimer = QtGui.QLCDNumber(self.widget)
        self.lcd40MinTimer.setObjectName(_fromUtf8("lcd40MinTimer"))
        self.gridLayout.addWidget(self.lcd40MinTimer, 0, 1, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.btnStartReset.setText(QtGui.QApplication.translate("MainWindow", "Start / Reset", None, QtGui.QApplication.UnicodeUTF8))

Заранее спасибо.


Эй, ребята... вот некоторый прогресс, которого я добился... грустно, что мне потребовалось три дня, чтобы сделать это, но эй, тем не менее, это прогресс! Теперь я собираюсь работать над установкой формата в чч: мм: сс, а функции кнопок включают запуск, остановку и сброс ... Может быть, это поможет некоторым людям, а может быть, кто-то может помочь мне! Вместе я уверен, что у нас все получится! ВАШЕ ЗДОРОВЬЕ!!!

#!/usr/bin/python
# -*- coding: utf-8 -*-



import sys from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.lcd = QtGui.QLCDNumber(self)
        self.lcd.setGeometry(30, 40, 200, 25)

        self.btn = QtGui.QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QtCore.QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QtGui.QLCDNumber')
        self.show()

    def timerEvent(self, e):

        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return

        self.step = self.step + 1
        self.lcd.display(self.step)

    def doAction(self):

        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

person xopenex    schedule 08.03.2012    source источник
comment
Привет, ребята, я работал над этим время от времени... как грустно, мне потребовалось три дня, чтобы добиться хотя бы этого небольшого прогресса... да ладно, все еще прогресс! :) Теперь я буду работать над изменением формата чч:мм:сс и изменением функций кнопок, чтобы включить стоп, пуск и сброс. Надеюсь, это поможет, может быть, вместе мы сможем понять это!   -  person xopenex    schedule 12.03.2012


Ответы (1)


xopenex, некоторое время назад я написал таймер обратного отсчета на Python, используя Qt. Может быть, это то, что вы искали?

https://github.com/twigmac/count-up-timer

person twigmac    schedule 11.09.2013