当在 Windows 上按 X 时,PySimpleGUI one_line_progress_meter 不会 return False

PySimpleGUI one_line_progress_meter does not return False when pressing X on Windows

在 PySimpleGUI 的 docs 中声明函数 returns 如果按下取消按钮或 windows 标题栏中的 X 按钮则为真。但是,它仅适用于版本 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

我是不是漏掉了什么?

对于sg.one_line_progress_meter的window,定义为disable_close=True,所以这个window不能通过点击Close按钮关闭28=],只有 Cancel 按钮适用。

好的,下面的代码展示了破解方法

  • 找到 window one_line_progress_meter
  • 将 quick-meter window 的属性 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()