有没有办法取消选中组中的所有单选按钮?(PyGTK的)

lin*_*r03 8 gtk pygtk

有没有办法取消使用PyGTK取消选中组中的所有单选按钮?启动时没有选中单选按钮,因此我认为必须有一种方法可以将它们全部恢复到未检查状态.

Alv*_*Row 6

我同意迈克尔,但是为了记录,这可以做到.

一种方法是使用一个隐藏的单选按钮,您可以激活它,这将导致所有可见的按钮处于非活动状态.快速肮脏的例子:

import gtk

window = gtk.Window()
window.set_default_size(200, 200)

rb1 = gtk.RadioButton()
rb2 = gtk.RadioButton()
rb3 = gtk.RadioButton()

rb2.set_group(rb1)
rb3.set_group(rb2)

rb3.set_active(True)

hbox = gtk.HBox()

hbox.add(rb1)
hbox.add(rb2)
hbox.add(rb3)

button = gtk.Button("Click me")
button.connect("clicked", lambda x: rb3.set_active(True))

hbox.add(button)

window.add(hbox)
window.show_all()

rb3.hide()

gtk.main()
Run Code Online (Sandbox Code Playgroud)


Mic*_*hne 3

不应该有。就其本质而言,单选按钮组是一种“从多个中选择一个”类​​型的控件。从人类的角度来看,这个想法是总是选择其中之一。框架确实应该强制执行这一点,因此该组实际上不应该有“未选择”状态。单选按钮组的未选择状态(在可能的框架中)对用户来说非常令人困惑,因为这不是他们可以进入控件的状态。

如果您想要“未选择”状态,我建议您应该向组中添加一个“无”元素,或者选择符合您想要执行的操作的不同控件类型。

  • 如果您有一个带有单选按钮的调查问卷,并且您不希望其中有任何偏见,则需要一种不选择任何按钮的方法。 (7认同)
  • 完全不同意。想象一下这样一种情况:单选按钮组对与另一个小部件的交互不敏感。任何项目都不应显示为选中状态。GTK 本身不会强迫你遵守一些想象的规则。 (6认同)
  • 例如,如果您想检查人们是否理解他们必须执行的任务,这可能是常规答案。如果这是预先选择的,您可能会影响答案的分配。此外,这种选择并不总是需要的。在一些心理实验中,你希望人们选择一个常规答案,即使他们往往不选择其中任何一个(例如:你更喜欢“奥巴马和参议院共和党多数”还是“罗姆尼和参议院民主党多数”) (4认同)
  • 谢谢。我添加了一个“无”单选按钮。:) (3认同)
  • @Ali A:你仍然不应该能够强制不选择。该组应该在视觉上变得不同(在大多数系统上呈灰色),以表明它无法与之交互。在良好的 UI 中,之前的选择应该仍然存在,因为如果您恢复其他控件的设置,单选按钮应该返回到您触摸其他控件之前的状态。 (2认同)
  • 仅供参考:我写了一个[基于 Gtk# 的后续问题](http://stackoverflow.com/questions/32386542/how-to-prevent-auto-selection-of-radio-buttons) 引用这个答案。由于 Gtk# 相当直接地公开了 Gtk 的接口,*也许*您对此有一个想法,以防万一您有时间查看它。 (2认同)
  • @MichaelKohne Sebastian 的评论是一个很好的例子,说明了这可能有用。问题是,我正在制作一个使用 Gtk 的框架。为此,我需要完全控制小部件。所以我需要能够控制是否选择单选按钮 (2认同)