如何链接一组切换按钮,如单选按钮?
Posted
技术标签:
【中文标题】如何链接一组切换按钮,如单选按钮?【英文标题】:How can I link a set of toggle buttons like radio buttons? 【发布时间】:2013-02-13 18:30:12 【问题描述】:我正在使用 Python 3 和 Gtk 的 gobject 自省。我怎样才能将多个切换按钮链接在一起,以便它们的行为类似于选项卡或单选按钮 - 例如默认选中一个,当另一个是clicked
时,之前的active
一个被取消选中。
我曾尝试使用set_sensetive
,但这会使应用它的小部件变灰。
【问题讨论】:
【参考方案1】:使用 Gtk.RadioButton 并将绘图指示符模式设置为 False
button1 = Gtk.RadioButton("Product Codes")
button1.set_mode(False)
https://lazka.github.io/pgi-docs/Gtk-3.0/classes/ToggleButton.html#Gtk.ToggleButton.set_mode
感谢:
https://***.com/a/15123955/1907997 和 How can I link a set of toggle buttons like radio buttons?【讨论】:
【参考方案2】:使用set_active()
(或props.active
)。或者,您可以创建一些Gtk.RadioButton
小部件并将draw_indicator
属性设置为False
。在后一种情况下,您可以以正常方式创建单选组,无需自定义处理。
【讨论】:
在我看来,您的“替代”解决方案是首选。 @doublep,请参阅我对 iain 的回答以获得您的第一个建议,但我会接受您对“替代”建议的回答。 @doublep,顺便说一句,我想你的意思是Gtk.ToolButton.set_mode(False)
他的解决方案对我有用。只需确保在切换按钮的回调中检查小部件是否处于活动状态,否则无论设置为 false 还是 true,它都会执行。【参考方案3】:
您在切换按钮上收听切换信号,然后在其他按钮上调用 set_active()
。您需要在调用 set_active()
时阻止切换信号,以免陷入循环。
【讨论】:
我创建了一个回调函数,在发出clicked
信号时执行该函数,如果在单击之前它处于活动状态,它将再次将按钮设置为活动状态(因为我不希望所有按钮未激活),但似乎该函数在执行回调之前执行...以上是关于如何链接一组切换按钮,如单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章