A single radio button performs the same basic function as a #GtkCheckButton,
as its position in the object hierarchy reflects. It is only when multiple
radio buttons are grouped together that they become a different user
interface component in their own right.
Every radio button is a member of some group of radio buttons. When one is
selected, all other radio buttons in the same group are deselected. A
#GtkRadioButton is one way of giving the user a choice from many options.
Radio button widgets are created with gtk.radio_button.RadioButton.new_, passing null
as the argument if this is the first radio button in a group. In subsequent
calls, the group you wish to add this button to should be passed as an
argument. Optionally, gtk.radio_button.RadioButton.newWithLabel can be used if you
want a text label on the radio button.
A GtkRadioButton without indicator changes the name of its main node
to button and adds a .radio style class to it. The subnode is invisible
in this case.
void create_radio_buttons (void) {
GtkWidget *window, *radio1, *radio2, *box, *entry;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
// Create a radio button with a GtkEntry widget
radio1 = gtk_radio_button_new (NULL);
entry = gtk_entry_new ();
gtk_container_add (GTK_CONTAINER (radio1), entry);
// Create a radio button with a label
radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),
"I’m the second radio button.");
// Pack them into a box, then show all the widgets
gtk_box_pack_start (GTK_BOX (box), radio1);
gtk_box_pack_start (GTK_BOX (box), radio2);
gtk_container_add (GTK_CONTAINER (window), box);
gtk_widget_show_all (window);
return;
}
When an unselected button in the group is clicked the clicked button
receives the #GtkToggleButton::toggled signal, as does the previously
selected button.
Inside the #GtkToggleButton::toggled handler, gtk.toggle_button.ToggleButton.getActive
can be used to determine if the button has been selected or deselected.
A single radio button performs the same basic function as a #GtkCheckButton, as its position in the object hierarchy reflects. It is only when multiple radio buttons are grouped together that they become a different user interface component in their own right.
Every radio button is a member of some group of radio buttons. When one is selected, all other radio buttons in the same group are deselected. A #GtkRadioButton is one way of giving the user a choice from many options.
Radio button widgets are created with gtk.radio_button.RadioButton.new_, passing null as the argument if this is the first radio button in a group. In subsequent calls, the group you wish to add this button to should be passed as an argument. Optionally, gtk.radio_button.RadioButton.newWithLabel can be used if you want a text label on the radio button.
Alternatively, when adding widgets to an existing group of radio buttons, use gtk.radio_button.RadioButton.newFromWidget with a #GtkRadioButton that already has a group assigned to it. The convenience function gtk.radio_button.RadioButton.newWithLabelFromWidget is also provided.
To retrieve the group a #GtkRadioButton is assigned to, use gtk.radio_button.RadioButton.getGroup.
To remove a #GtkRadioButton from one group and make it part of a new one, use gtk.radio_button.RadioButton.setGroup.
The group list does not need to be freed, as each #GtkRadioButton will remove itself and its list item when it is destroyed.
CSS nodes
A GtkRadioButton with indicator (see gtk.toggle_button.ToggleButton.setMode) has a main CSS node with name radiobutton and a subnode with name radio.
A GtkRadioButton without indicator changes the name of its main node to button and adds a .radio style class to it. The subnode is invisible in this case.
How to create a group of two radio buttons.
When an unselected button in the group is clicked the clicked button receives the #GtkToggleButton::toggled signal, as does the previously selected button. Inside the #GtkToggleButton::toggled handler, gtk.toggle_button.ToggleButton.getActive can be used to determine if the button has been selected or deselected.