如何链接一组切换按钮,如单选按钮?

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 信号时执行该函数,如果在单击之前它处于活动状态,它将再次将按钮设置为活动状态(因为我不希望所有按钮未激活),但似乎该函数在执行回调之前执行...

以上是关于如何链接一组切换按钮,如单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 单选按钮 - 如何正确切换选中状态

如何通过软件取消链接没有 GroupBox 的所有单选按钮

制作一组单选按钮 [VB.NET]

如何指示需要一组单选按钮[重复]

仅在选中时读取 GTK 单选按钮信号

如何在我的程序中保存一组单选按钮的状态?