此处的教程http://developer.gnome.org/gtk-tutorial/2.90/x542.html 展示了如何设置单选按钮,但没有告诉您如何使用它们。
然后我如何找到选择了哪个单选按钮?
我的解决方案:
初始化单选按钮:
rbutton1 = gtk_radio_button_new_with_label(NULL, "button1");
gtk_box_pack_start(GTK_BOX(rbutton_box), rbutton1, TRUE, TRUE, 0);
rbuttonGroup = gtk_radio_button_get_group(GTK_RADIO_BUTTON(rbutton1)); /*not sure what I'd use this line for currently though*/
rbutton2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(rbutton1), "button 2");
gtk_box_pack_start(GTK_BOX(rbutton_box), rbutton2, TRUE, TRUE, 0);
rbutton3 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(rbutton1), "button 3");
gtk_box_pack_start(GTK_BOX(rbutton_box), rbutton3, TRUE, TRUE, 0);
Run Code Online (Sandbox Code Playgroud)
并更新一个变量,告诉您使用此方法选择了哪个单选按钮:
void checkRadioButtons()
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutton1))==TRUE) selectedRadioButton =1;
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutton2))==TRUE) selectedRadioButton =2;
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutton3))==TRUE) selectedRadioButton =3;
}
Run Code Online (Sandbox Code Playgroud)
谷歌把我带到这里进行 python/pygtk/pygtk3 搜索,所以我希望我发布一个 pygtk 解决方案:
def _resolve_radio(self, master_radio):
active = next((
radio for radio in
master_radio.get_group()
if radio.get_active()
))
return active
Run Code Online (Sandbox Code Playgroud)
这使用生成器返回第一个(应该是唯一的)活动的活动单选框。
您可以GtkToggleButton::toggled改为连接到信号。在关联的回调中,您将能够更新变量。至于对 的调用gtk_radio_button_get_group,只有在调用gtk_radio_button_new_with_label而不是 时才需要它gtk_radio_button_new_with_label_with_widget,如您所引用的教程中所指定的那样。