# RadioButton (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Navzájem se vylučující přepínače

# RadioButton

Tři skupinové přepínače. V terminálu uvidíte, když dojde k jejich přepnutí.

# Kód použitý k vygenerování tohoto příkladu

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow):

def __init__(self, app): Gtk.Window.__init__(self, title="RadioButton Example", application=app) self.set_default_size(250, 100) self.set_border_width(20)

# Nový skupinový přepínač s popiskem button1 = Gtk.RadioButton(label="Button 1") # Napojí signál "toggled" vyslaný skupinovým přepínačem # na funkci zpětného volání toggled_cb button1.connect("toggled", self.toggled_cb)

# Další skupinový přepínač, ve stejné skupině jako button1 button2 = Gtk.RadioButton.new_from_widget(button1) # S popiskem "Button 2" button2.set_label("Button 2") # Napojí signál "toggled" vyslaný skupinovým přepínačem # na funkci zpětného volání toggled_cb button2.connect("toggled", self.toggled_cb) # Nastaví button2 jako neaktivní ve výchozím stavu button2.set_active(False)

# Další skupinový přepínač, ve stejné skupině jako button1 # S popiskem "Button 3" button3 = Gtk.RadioButton.new_with_label_from_widget( button1, "Button 3") # Napojí signál "toggled" vyslaný skupinovým přepínačem # na funkci zpětného volání toggled_cb button3.connect("toggled", self.toggled_cb) # Nastaví button3 jako neaktivní ve výchozím stavu button3.set_active(False)

# Mřížka pro umístění tlačítek grid = Gtk.Grid.new() grid.attach(button1, 0, 0, 1, 1) grid.attach(button2, 0, 1, 1, 1) grid.attach(button3, 0, 2, 1, 1) # Přidá mřížku do okna self.add(grid)

# Funkce zpětného volání def toggled_cb(self, button): # Řetězec popisující stav skupinového přepínače state = "unknown" # Kdykoliv je skupinový přepínač zapnut, je stav "on" if button.get_active(): state = "on" # Jinak je stav "off" else: state = "off" # Kdykoliv je funkce zavolána (skupinový přepínač je zapnut nebo vypnut) # vypíše se do terminálu, který skupinový přepínač byl zapnut/vypnut print(button.get_label() + " was turned " + state)

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Užitečné metody pro widget RadioButton

Na řádku 16 je signál `"toggled"` napojen na funkci zpětného volání `toggled_cb()` pomocí `widget.connect(signál, funkce zpětného volání)`. Podrobnější vysvětlení viz .

Jak jste mohli vidět v lekci , místo `button1 = Gtk.RadioButton(label="Button 1")` bychom mohli vytvořit tlačítko a pak mu nastavit popisek:

button1 = Gtk.RadioButton() button1.set_label("Button 1").

Ještě jeden způsob, jak vytvořit nový skupinový přepínač s popiskem je `button1 = Gtk.RadioButton.new_with_label(None, "Button 1")` (první argument je skupina skupinových přepínačů, kterou můžeme získat pomocí `get_group()`, druhý argument je text popisku).

# Odkazy k API

V této ukázce se používá následující:

GtkWindow

GtkGrid

GtkRadioButton