2012-03-08 121 views
0

使用Qt Designer和python2.7。我試圖用Qt Designer按鈕和LCD編號創建一個「向上計數」定時器。我希望有一個按鈕可以啓動並重置定時器和LCD編號,以顯示以hh:mm:ss格式傳送的時間量。我也試圖在40分鐘時彈出一個窗口,並顯示「Good Job You Made It!」的消息。使用Qt設計按鈕和LCD編號的Python計時器

我搜索了答案,嘗試了很多不同的谷歌搜索組合......現在我所有的結果都顯示爲紫色(我已經按照鏈接)!大聲笑我看到很多其他語言和倒數計時器的例子,看起來像是其他所有其他定時器和語言的其他組合......但沒有一個用於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格式的GUI的代碼。

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

在此先感謝您。

嘿,夥計......這是我取得的一些進步......可悲的是,它讓我花了三天時間完成這一切,但是,嘿,沒有什麼是進步!現在我打算將格式設置爲hh:mm:ss,並讓按鈕功能包括開始,停止和重置......也許這會幫助一些人,也許有人可以幫助我!我相信我們可以做到這一點!乾杯!!!

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

+0

好傢伙,這方面的工作和關閉......多麼可悲的,這花了我三天做的進步這麼一點..哦,還在進步! :)現在我將改變格式hh:mm:ss,並改變按鈕功能以包括停止,啓動和重置。希望這會有所幫助,也許我們可以一起解決這個問題! – xopenex 2012-03-12 03:32:39

回答