我的問題與PyGObject,Gtk3和信號抑制有關。PyGtk3〜允許來自用戶的信號,但不是以編程方式
我有一個ComboBoxText
,連接了一個信號。
self.cbtPaths = Gtk.ComboBoxText()
self.cbtPaths.connect("changed", self.on_changed_path)
def on_changed_path(self,action):
path = self.cbtPaths.get_active_text()
i = self.hPaths.change(path)
self.cbtPaths.set_active(i) #1
self.on_changed_path()
當用戶改變ComboBoxText
被調用。 哪個好。
on_changed_path()
在代碼執行標記爲#1的行時被調用。 這會導致永無止境的循環。
我的問題是:如何防止在#1的行觸發更改信號。
注意:我還在另一部分代碼中調用self.cbtPaths.set_active(i)
。
我不認爲你想在你的on_changed_path方法中調用set_active。當選擇已經改變時,on_changed_path將被調用,所以不需要再次設置它。我不明白hPaths和cbtPaths的關係。 – ditkin
感謝您的評論ditkin, hPaths是我寫的幫助器類,它用新項目填充ComboBoxText。這些新項目基於用戶從ComboBoxText中選擇的值。 –