PySimpleGUI Window 也消失了 Quickly/Some 需要其他选项

PySimpleGUI Window Disappearing too Quickly/Some Other Options Needed

我创建了一个 PySimpleGUI Window,其中包含一些文本、透明背景且没有标题栏,但它不符合 auto_close_duration 属性。我知道这是因为我没有正确实施它,只是在研究如何解决这个问题。

此外,我希望 window 在关闭之前保持活动状态一段时间,但也希望听到任何键盘按钮按下以提前自动关闭它。如果任何键盘按钮不起作用,可以使用 Escape 按钮,但在任何键盘上按下都是理想的选择。

这就是我现在拥有的,它会在消失前闪烁文字。 Python 3.8+ Windows 10.

import PySimpleGUI as sg

def popup(message):

    # Set font options
    sg.set_options(font=("Courier New", 24))

    # Define the transparent bg colour
    bg = '#add123'

    # Define a layout with our message to display
    layout = [[sg.Text(message, background_color=bg, pad=(0, 0))]]

    # Get the width and height of the current monitor (to use later)
    w, h = sg.Window.get_screen_size()

    # Define a window object to show our layout
    win = sg.Window('title', layout,
                    no_titlebar=True,
                    keep_on_top=True,
                    location=(None, None),
                    auto_close=True,
                    auto_close_duration=20,
                    transparent_color=bg,
                    margins=(0, 0),
                    # finalize=True,
                    )

    # Read the window?
    event, values = win.read(timeout=0)

    # Attempts to keep window alive for the auto_close_duration
    win.force_focus()

    # 1. How to keep window/popup message visible for auto_close_duration?
    # 2. How to close window if ANY keyboard button pressed, or the Escape key at the least?

    # win.close()
    return

popup('Here is the message.')

设置两个条件来产生键盘事件退出。

  • Window
  • 中的选项 return_keyboard_events=True
  • Window
  • 方法 read 中的选项 timeout
import PySimpleGUI as sg

def popup(message):
    sg.set_options(font=("Courier New", 24))
    bg = '#add123'
    layout = [[sg.Text(message, background_color=bg, pad=(0, 0))]]
    win = sg.Window('title', layout, no_titlebar=True, keep_on_top=True,
        location=(1000, 200), transparent_color=bg, margins=(0, 0),
        return_keyboard_events=True)
    win.read(timeout=3000, close=True)
    return

popup('Here is the message.')