2011-12-01 18 views
3

我有一組GTK +(3)RadioButtons。不過,我認爲GTK的版本並不重要。GTK + RadioButton默認值 - 如何解決醜陋的黑客?

當在我的應用程序中切換RadioButton時,將執行一個操作並使用相關信息更新GUI。這一切都是在「切換」信號的連接回調中處理的。沒問題。

只有未切換的RadioButton會觸發「切換」事件。說得通。

因此問題就出現了 - 在應用程序啓動時,組中的默認RadioButton將不會觸發「切換」事件,因爲它已被切換。

如何在默認RadioButton上觸發此初始操作?

我目前使用的醜陋的黑客 - 這是添加一個不可見的單選按鈕,讓這個活躍,那麼任何我的實際的RadioButtons可以是觸發「切換」信號有效默認值。

回答

2

下面將迫使按鈕發出toggled信號:

button.toggled() 

此操作,因爲toggled方法已定義。然而,如果不是你仍然可以使用emit方法來強迫任何部件發出的任何信號:

button.emit('toggled') 
+0

完美!我將set_active(用於設置默認值)替換爲切換,並按預期工作。謝謝。 – Peter

1

我不知道是否適合您的需要,但你也可以使用button.get_group()button.get_active()而不是看toggled事件。

# python shell 
button1 = gtk.RadioButton(None, "radio button1") 
button2 = gtk.RadioButton(button1, "radio button2") 
button3 = gtk.RadioButton(button1, "radio button3") 

for b in button3.get_group(): 
    print b.is_active() 

這應該適用於初始條件檢查。

+0

感謝您的建議。我知道這一點,但這是一種解決方法,或者至少使我的代碼比需要的更復雜。 – Peter

+0

@Peter不知道這是否真的是一種解決方法。根據你組織代碼的方式,GUI元素可能不是Python編碼的。如果是這樣,我建議的for循環更像是啓動的一般方法。 – Alexandre