PySimpleGUI one_line_progress_meter 在 Windows 上按 X 时不返回 False
Posted
技术标签:
【中文标题】PySimpleGUI one_line_progress_meter 在 Windows 上按 X 时不返回 False【英文标题】:PySimpleGUI one_line_progress_meter does not return False when pressing X on Windows 【发布时间】:2022-01-20 18:32:16 【问题描述】:在 PySimpleGUI 的 docs 中声明,如果按下取消按钮或窗口标题栏中的 X 按钮,该函数将返回 true。但是,它仅适用于版本 4.55.1 中的取消按钮。
MWE:
import time
import PySimpleGUI as sg
for i in range(1, 200):
time.sleep(0.1)
if not sg.one_line_progress_meter(title="test", current_value=i, max_value=200,
no_button=False):
print('returned false')
break
我错过了什么吗?
【问题讨论】:
文档中没有关于按下 X 按钮的内容。 @martineau 在我给出的链接中,为返回值编写了以下内容: (bool) RETURN 如果更新成功,则返回 True。如果用户使用 X 或 Cancel 按钮关闭仪表,则为 False。它们是指带有“取消”和“X”的同一个按钮吗? 哎呀,对不起,你是对的。一定是个bug,因为点击X按钮不仅不会导致函数返回False
,它也不会关闭窗口。
在 PySimpleGUI GitHub 上发布问题的另一个原因......然后可以跟踪暴露此类问题的问题,并指示为需要采取措施的问题。否则,它只是坐在这里,没有被采取行动......我看到它已经在 GitHub 上登录了......谢谢你也花时间在那里提问!
【参考方案1】:
对于sg.one_line_progress_meter
的窗口,定义为disable_close=True
,所以这个窗口不能通过点击窗口的Close
按钮关闭,只有Cancel
按钮对它起作用。
好的,下面的代码展示了破解方式
找到one_line_progress_meter
的窗口
设置快测窗口属性DisableClose
为False
import time
import PySimpleGUI as sg
sg.one_line_progress_meter(title="test", current_value=0, max_value=200, no_button=False)
key='OK for 1 meter'
meter = sg.QuickMeter.active_meters[key]
meter.window.DisableClose = False
for i in range(1, 200):
time.sleep(0.1)
if not sg.one_line_progress_meter(title="test", current_value=i, max_value=200, no_button=False):
print('returned false')
break
sg.one_line_progress_meter_cancel()
【讨论】:
如果sg.one_line_progress_meter
的窗口是这样定义的,那么文档是错误的。
在pysimplegui.readthedocs.io/en/latest 的发行说明中,它说 4.29.0 PySimpleGUI 25-Aug-2020 Disable close on one_line_progress_meter。有一个取消按钮可以关闭窗口。
Martin,我认为您是打开 GitHub 问题的人...如果是这样,非常感谢您抽出宝贵时间来做这件事。这对项目非常有帮助!谁打开它...谢谢。
github上的帖子大概是三天前的事了,但是这里才两天,IMO,这个人应该是Doesbaddel。
感谢您的澄清.... 让我摸不着头脑 :-) 我很高兴你很高兴。以上是关于PySimpleGUI one_line_progress_meter 在 Windows 上按 X 时不返回 False的主要内容,如果未能解决你的问题,请参考以下文章