ラズパイデスクトップでPyQt5入門(14)Widgets(3)
こんばんは。國松です。
今回は大分間が開いてしまいましたが前回の続きでProgressBarにリセットボタンを作っていきたいと思います。
参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-
4.1QProgressBar(resetボタン有り)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #!/usr/bin/python3 #-*- coding: utf-8-*- """ This example shows a QProgressBar widget. """ from PyQt5.QtWidgets import (QWidget,QProgressBar,QPushButton,QApplication) from PyQt5.QtCore import QBasicTimer import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): #プログレスバーの作成 self.pbar = QProgressBar(self) self.pbar.setGeometry(30,40,200,25) #スタート(ストップ)ボタンの作成 self.btn = QPushButton('Start',self) self.btn.move(30,80) self.btn.clicked.connect(self.doAction) #リセットボタンの作成 self.rbtn = QPushButton('Reset',self) self.rbtn.move(150,80) self.rbtn.clicked.connect(self.resetAction) self.timer = QBasicTimer() self.step = 0 self.setGeometry(300,300,280,170) self.setWindowTitle('ProgressBar') self.show() #プログレスバーが100%以上になったらタイマーを止めてボタンラベルをFinishiedにする def timerEvent(self,e): if self.step >= 100: self.timer.stop() self.btn.setText('Finished') return #1%ずつ数字を増やしていく self.step = self.step + 1 self.pbar.setValue(self.step) #リセットボタンの動作 def resetAction(self): if self.timer.isActive(): return else: self.step = 0; self.pbar.setValue(0); self.btn.setText('Start') #ボタンがクリックされたときの動作 def doAction(self): #タイマーが動いていたらタイマーを止め,ボタンラベルをStartにする if self.timer.isActive(): self.timer.stop() self.btn.setText('Start') #タイマーが動いていなければタイマーをスタートさせボタンラベルをStopにする elif(self.btn.text() != 'Finished'): self.timer.start(100,self) self.btn.setText('Stop') if(self.btn.text() == 'Finished'): self.resetAction() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) |
今回はここまでにしたいと思います。次回はQCalenderWidgetをみていきます。