Qt Designer と python2.7 を使用します。Qt Designer ボタンと LCD 番号から「カウントアップ」タイマーを作成しようとしています。1 つのボタンでタイマーを開始およびリセットし、LCD 番号で経過時間を hh:mm:ss 形式で表示したいと考えています。また、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 形式の 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))
前もって感謝します。
Hey Guys.. ここに私が成し遂げたいくつかの進歩があります... これを達成するのに3日かかったのは悲しいですが、それでも進歩です! 今、フォーマットを 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()