【问题标题】:Make PySimpleGUI Radio Buttons generate events使 PySimpleGUI 单选按钮生成事件
【发布时间】:2020-07-05 20:15:15
【问题描述】:

过去,要使用 Matplotlib Widgets 构建单选按钮并将按下的按钮名称打印到终端,我已经这样做了:

import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

def update(val):
    print(rb.value_selected)
    fig.canvas.draw_idle()

fig, ax = plt.subplots(1, 1)
ax = plt.axes([0.5, 0.4, 0.1, 0.15], facecolor='gray')
rb = RadioButtons(ax,  ('pi', '42'), active=0)
rb.on_clicked(update)
plt.show()

单选按钮上的更改总是会生成一个事件

查看this answer 中的示例,我似乎还需要包含一个额外的Read 按钮;单选按钮的可见外观可能与我的脚本认为用户想要的不同,直到用户按下Read。操作单选按钮似乎不会生成事件。然后你必须按下第二个按钮,上面写着 嘿!我已经下定决心了,现在看看吧!

import PySimpleGUI as sg

layout = [[sg.Radio('pi', 'num', default=True) ,
           sg.Radio('42', 'num')],
          [sg.Button('Read')]]

window = sg.Window('Radio Button Example', layout)

while True:             # Event Loop
    event, values = window.Read()
    if event in (None, 'Cancel'):
        break
    print(event, values)

window.close()

This comment

我认为您遇到了错误或单选按钮 enable_events 未实现。我以为是,但可能不在 Qt 上。我会优先考虑并查看代码。

这让我觉得应该有一种方法可以在 PySimpleGUI 中生成一个事件,当一个单选按钮被改变而不需要一个单独的按钮,但我不知道是否有一个。

问题:有没有办法让 PySimpleGUI 单选按钮在更改时生成事件?

【问题讨论】:

  • 文档清楚地讨论了这一点。将它们发布在 GitHub 上也很好,因为它会删除一个要检查的位置。
  • 确实如此!我想我被单页文档上的 1 MB 文本墙弄得不知所措,我没想到它会成为给定单选按钮集群的每个元素的单独参数,但我可以使用它。跨度>
  • 被文档吓倒的答案是搜索它(按 control F),或者花时间阅读它,以免它不堪重负。诚实的抱怨是文件太多?页面左边缘有一个目录。每个元素都有一个详细的调用签名,它的方法显示每个参数、类型和描述。至少转到文档末尾的那个部分。
  • @MikeyB 好的,你对文档的布局很着迷,明白了!

标签: python python-3.x radio-button widget pysimplegui


【解决方案1】:

enable_events 参数指定发生更改时生成事件。记录在这里: https://pysimplegui.readthedocs.io/en/latest/#radio-element

尝试示例。也适用于 PySimpleGUIQt。

import PySimpleGUI as sg

layout = [  [sg.Text('Radio Button Events')],
            [sg.Radio('1', 1, enable_events=True, key='R1'), sg.Radio('2',1, enable_events=True, key='R2')],
            [sg.Button('Go'), sg.Button('Exit')]  ]

window = sg.Window('Window Title', layout)

while True:             # Event Loop
    event, values = window.read()
    print(event, values)
    if event in (None, 'Exit'):
        break
window.close()

【讨论】:

  • 好的,给定单选按钮组的每个按钮(元素)都可以单独启用或禁用事件。这很奇怪,但没关系。 谢谢!
  • 这没什么奇怪的。启用事件的参数对所有元素都是通用的。它是几乎所有元素都有的 6 或 7 个之一。 pysimplegui.readthedocs.io/en/latest/#common-element-parameters。很高兴将来回答问题,只是不会在这里做。您寻求的答案可能在提供给您的资源之一中,如果您能克服对阅读的恐惧,那么您​​可能会比发帖更快地自己回答。
  • 我认为有一组单选按钮很奇怪,其中一些生成事件而另一些不生成。在此之前,我唯一的例子是无线电上的实际按钮,该术语源自该术语、Matplotlib 的 RadioButton 小部件,以及我作为最终用户使用过的每个 UI。所以这对我来说事实上很奇怪。我现在将看一些其他示例,以了解混合按钮(一些生成事件,一些不生成事件)的常见程度。
  • 您对帮助的回应是在您希望被标记为“正确”的位置发布帖子?为了证明一个观点,而不是仅仅接受帮助并推进你的项目?这是一个设置单个单选按钮事件的 GUI... tkinter。查看在您创建的每个 Radiobutton Widget 上设置的“command”参数的作用。如果你不喜欢 PySimpleGUI 或者觉得 GUI 编程很奇怪,那就继续吧。我希望你的项目进展顺利。也许更少的时间是正确的,更多的时间在学习包上?
猜你喜欢
  • 2019-07-04
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2019-04-29
  • 2017-04-10
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多