Object Hierarchy:

Object hierarchy for RadioButton


public class RadioButton : CheckButton, Implementor, Actionable, Activatable, Buildable

A single radio button performs the same basic function as a CheckButton, 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 RadioButton is one way of giving the user a choice from many options.

Radio button widgets are created with RadioButton, 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, RadioButton.with_label 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 RadioButton.from_widget with a RadioButton that already has a group assigned to it. The convenience function RadioButton.with_label_from_widget is also provided.

To retrieve the group a RadioButton is assigned to, use get_group.

To remove a RadioButton from one group and make it part of a new one, use set_group.

The group list does not need to be freed, as each RadioButton will remove itself and its list item when it is destroyed.

CSS nodes

├── radio
╰── <child>
Button with indicator (see set_mode) has a main CSS node with name radiobutton and a subnode with name radio.
├── radio
╰── <child>
Button 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.

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);
When an unselected button in the group is clicked the clicked button receives the toggled signal, as does the previously selected button. Inside the toggled handler, get_active can be used to determine if the button has been selected or deselected.


Example: RadioButton:

public class Application : Gtk.Window {
private void toggled (Gtk.ToggleButton button) {
print ("%s\n", button.label);

public Application () {
// Prepare Gtk.Window:
this.title = "My Gtk.RadioButton";
this.window_position = Gtk.WindowPosition.CENTER;
this.destroy.connect (Gtk.main_quit);
this.set_default_size (350, 70);

// A VBox:
Gtk.Box box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
this.add (box);

// The buttons:
Gtk.RadioButton button1 = new Gtk.RadioButton.with_label_from_widget (null, "Button 1");
box.pack_start (button1, false, false, 0);
button1.toggled.connect (toggled);

Gtk.RadioButton button = new Gtk.RadioButton.with_label_from_widget (button1, "Button 2");
box.pack_start (button, false, false, 0);
button.toggled.connect (toggled);

button = new Gtk.RadioButton.with_label_from_widget (button1, "Button 3");
box.pack_start (button, false, false, 0);
button.toggled.connect (toggled);
button.set_active (true);

public static int main (string[] args) {
Gtk.init (ref args);

Application app = new Application ();
app.show_all ();
Gtk.main ();
return 0;

valac --pkg gtk+-3.0 Gtk.RadioButton.vala

Namespace: Gtk
Package: gtk+-3.0



Creation methods:



Inherited Members:

All known members inherited from class Gtk.CheckButton
All known members inherited from class Gtk.Bin
All known members inherited from class Gtk.Widget
All known members inherited from interface Atk.Implementor