PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
GUI アプリで決まった間隔で表示の更新などの処理をさせたい場合、QTimer を利用すると簡単に処理を実装できます。
今回のテーマ
- PySide6 の QLCDNumber と QTimer クラスを利用して、シンプルなデジタル時計アプリを作ります。
下記の OS 環境で動作確認をしています。
![]() |
RHEL 9.4 | x86_64 |
Python | 3.12.1 | |
PySide6 | 6.7.0 |
メインの PC に Fedora Linux を利用していましたが、今月初めに dnf update でパッケージを更新した後、Fedora Linux 40 上 venv で利用している PySide6 アプリがコアダンプを吐いて利用できなくなりました。原因がわからず、日々利用している自作アプリに支障が出たので、やむなく RHEL に切り替えています [3]。
サンプルと実行例を以下に示しました。
qt_lcdnumber.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import datetime | |
import sys | |
from PySide6.QtCore import QTimer | |
from PySide6.QtWidgets import ( | |
QApplication, | |
QLCDNumber, | |
QVBoxLayout, | |
QWidget, | |
) | |
class Example(QWidget): | |
def __init__(self): | |
super().__init__() | |
self.setFixedSize(200, 50) | |
self.setWindowTitle('Clock') | |
box = QVBoxLayout() | |
box.setContentsMargins(0, 0, 0, 0) | |
self.setLayout(box) | |
self.lcd = QLCDNumber(self) | |
self.lcd.setDigitCount(8) | |
self.lcd.display('00:00:00') | |
box.addWidget(self.lcd) | |
timer = QTimer(self) | |
timer.timeout.connect(self.update_time) | |
timer.start(1000) | |
def update_time(self): | |
dt_now = datetime.datetime.now() | |
self.lcd.display(dt_now.strftime('%H:%M:%S')) | |
def main(): | |
app = QApplication(sys.argv) | |
ex = Example() | |
ex.show() | |
sys.exit(app.exec()) | |
if __name__ == '__main__': | |
main() |
qt_lcdnumber.py の実行例
QTimer クラスを使用するには、QTimer のインスタンスを作成し、timeout() シグナルを適切なスロット(処理するメソッド)に接続し、msec で間隔を指定した start() メソッドを呼び出します。以降、指定された間隔で timeout() シグナルが発せられます。
timer = QTimer( self ) timer.timeout.connect( self .update_time) timer.start( 1000 ) |
本サンプルでは 1000 msec = 1 sec 間隔で timeout() シグナルが発せられるようにして self.update_time() メソッドで QLCDNumber クラスのインスタンスの時刻表示を更新しています。
参考サイト
- QLCDNumber - Qt for Python
- QTimer - Qt for Python
- After updating fedora 40 PySide6 in Python it does not work - Fedora Discussion

にほんブログ村
#オープンソース

0 件のコメント:
コメントを投稿