大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイデスクトップでPyQt5入門(14)Widgets(3)

著者:國松亜紗子
公開日:2020/01/22
最終更新日:2020/01/22
カテゴリー:技術情報

こんばんは。國松です。
今回は大分間が開いてしまいましたが前回の続きでProgressBarにリセットボタンを作っていきたいと思います。

参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-

4.1QProgressBar(resetボタン有り)

#!/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をみていきます。

    上に戻る