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