Gtk.ToggleButtonの使用②
Gtk.ToggleButtonやGtk.CheckButtonは、ラジオボタンのように複数のボタンを1つのグループにまとめて、そのグループの内で1つのボタンだけがOnになるように指定できます。(グループ内の他のボタンを選択するとそれ以外のボタンの選択が解除されます)
今回は、Gtk.ToggleButtonをラジオボタン化する方法について紹介します。
今回紹介する内容
・ Gtk.ToggleButtonをラジオボタン化する
XMLデータでGtk.TogglButtonを作成する方法についての紹介
Gtk.ToggleButtonの作成②
Gtk.ToggleButtonをラジオボタン化する
Gtk.ToggleButtonのラジオボタン化は、以下のように2個目以降のGtk.ToggleButtonを定義する時に、プロパティgroupで指定します。groupの値は、1個目のGtk.ToggleButtonの値にします。
※ メソッドset_group()でも指定可能
# 1個目のGtk.ToggleButton
button1 = Gtk.ToggleButton(label="ボタン 1")
button1.connect("toggled", self.on_button_toggled, "1")
# 2個目のGtk.ToggleButton
button2 = Gtk.ToggleButton(label="ボタン 2", group=button1)
サンプルプログラム
以下のサンプルプログラムを実行すると、下図のような3つのグループ化されたGtk.ToggleButtonが表示されます。Gtk.ToggleButtonの1つをOnにすると、残りの2つは自動的にOffになります。また、ターミナルにOnにしたボタンに対応したメッセージを表示します。
例: ボタン1がオンになりました。
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
APPID = 'com.github.taniyoshima.g4_fblog_checkbutton2'
class Gtk4TestTest(Gtk.Window):
def __init__(self, app):
Gtk.Window.__init__(
self, application=app, title='Gtk.CheckButton Test2',
default_width=450, default_height=100)
box = Gtk.Box(
margin_top=20, margin_bottom=20,
margin_start=20, margin_end=20,
spacing=20
)
button1 = Gtk.CheckButton(label="ボタン 1")
button1.connect("toggled", self.on_button_toggled, "1")
button2 = Gtk.CheckButton(label="ボタン 2", group=button1)
button2.connect("toggled", self.on_button_toggled, "2")
button3 = Gtk.CheckButton(label="ボタン 3", group=button1)
button3.connect("toggled", self.on_button_toggled, "3")
box.append(button1)
box.append(button2)
box.append(button3)
self.set_child(box)
def on_button_toggled(self, button, name):
if button.get_active():
state = "オン"
print('ボタン', name, 'が', state, 'になりました。')
class Gtk4TestApp(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self, application_id=APPID)
def do_activate(self):
window = Gtk4TestTest(self)
window.present()
def main():
app = Gtk4TestApp()
app.run()
if __name__ == '__main__':
main()