此处的教程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);
并更新一个变量,告诉您使用此方法选择了哪个单选按钮:
        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;
}
谷歌把我带到这里进行 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
这使用生成器返回第一个(应该是唯一的)活动的活动单选框。
您可以GtkToggleButton::toggled改为连接到信号。在关联的回调中,您将能够更新变量。至于对 的调用gtk_radio_button_get_group,只有在调用gtk_radio_button_new_with_label而不是 时才需要它gtk_radio_button_new_with_label_with_widget,如您所引用的教程中所指定的那样。
| 归档时间: | 
 | 
| 查看次数: | 11522 次 | 
| 最近记录: |