PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
ラジオボタンの機能とは、複数のラジオボタンを並べて、その中から一つのみが選ばれる機能を指しています。この、「ひとつのみが選ばれる機能」を、プッシュボタンで実現する例を紹介します。
下記の OS 環境で動作確認をしています。
RHEL 9.4 | x86_64 | |
Python | 3.12.1 | |
PySide6 | 6.7.2 |
ここで紹介するサンプルでは、みふねたかし氏のサイト [1] で紹介されているイラストを、サイズを変更して利用させていただいています(下記)。
QRadioButton を利用した場合
まずはラジオボタンを3つ、横に並べたサンプルを示します。
「林檎」をオフにしました。 「葡萄」をオンにしました。 「葡萄」をオフにしました。 「蜜柑」をオンにしました。 「蜜柑」をオフにしました。 「林檎」をオンにしました。
もし、レイアウト上の問題や、あるいは好みの問題から、ラジオボタンのチェック部分を取り除き、文字列はツールチップをポップアップして表示させるようにして、イメージだけのボタンにしたい場合、QRadioButton では実現できません。
QPushButton を利用した場合
QRadioButton が継承している QAbstractButton クラスは、QPushButton も継承していて、QRadioButton の「ひとつのみが選ばれる機能」という排他的な選択機能も実装しています。
そこで、QPushButton を利用して、ラジオボタンの「ひとつのみが選ばれる機能」という排他的な選択機能を実現しました。
サンプルを下記に示しました。
3つのボタンで同じ設定を繰り返すのを避けるため、QPushButton を継承した ToggleButtonImage クラスを用意しました。
class ToggleButtonImage(QPushButton): def __init__(self, imgname: str, tooltip_str: str): super().__init__() self.setIcon(QIcon(imgname)) self.setIconSize(QSize(32, 32)) self.setToolTip(tooltip_str) self.setCheckable(True) self.setAutoExclusive(True)
ラジオボタンと同じ機能は self.setCheckable(True) と self.setAutoExclusive(True) で実現しています。イメージだけを表示する代わりに、イメージのサイズを少し大きくしました。
QButtonGroup は、QRadioButton の時と同じように使えます。出力例は省略しましたが、selection_changed メソッドでは(ラジオボタンに表示していた文字列の代わりに)ツールチップに設定した文字列を出力するようにしています。
参考サイト
にほんブログ村
#オープンソース
0 件のコメント:
コメントを投稿