タイマーを使用してストップウォッチを作成
LCD形式の時計を作成するのには、LCD Number widgetが使える。
このwidgetで時刻を表示する、ストップウォッチを作成してみる。タイマーと組み合わせて作成したコードは以下の通り。経過時刻を求めるために、QtCore.QTime.secsTo()を用いている。
import sys from disptime import * class MyForm(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_Dialog() self.ui.setupUi(self) QtCore.QObject.connect(self.ui.pushButtonStart, QtCore.SIGNAL('clicked()'), self.startDisplay) QtCore.QObject.connect(self.ui.pushButtonStop, QtCore.SIGNAL('clicked()'), self.stopDisplay) self.ui.pushButtonStop.setEnabled(False) self.time1 = None self.showlcd() def showlcd(self): #LCD Number widgetの表示内容を更新 if self.time1 != None: #現在時刻とボタンを押したときの時刻の差を秒で表示する time2 = QtCore.QTime(self.time1).secsTo(QtCore.QTime.currentTime()) self.ui.lcdNumber.display(time2) def startDisplay(self): #スタートボタンを押したときの処理 self.timer = QtCore.QTimer(self) self.timer.timeout.connect(self.showlcd) self.timer.start(1000) self.time1 = QtCore.QTime.currentTime() #ボタンを押したときの時間を記録 self.ui.pushButtonStart.setEnabled(False) self.ui.pushButtonStop.setEnabled(True) def stopDisplay(self): self.timer.stop() #タイマーを止める self.ui.pushButtonStart.setEnabled(True) self.ui.pushButtonStop.setEnabled(False) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp = MyForm() myapp.show() sys.exit(app.exec_())