【问题标题】:How do I respond to window resize in PySimpleGUI如何在 PySimpleGUI 中响应窗口调整大小
【发布时间】:2021-02-26 03:42:39
【问题描述】:

如何在 PySimpleGUI 中调整窗口大小时收到通知?

我有一个启用调整大小事件的窗口,但我没有找到在调整大小发生时移动元素的方法,所以当窗口改变大小时,我的窗口重命名为左上角居中相同的大小。

这是基本代码:

import PySimpleGUI as sg

layout = [[sg.Button('Save')]]
window = sg.Window('Window Title', 
                   layout,
                   default_element_size=(12, 1),
                   resizable=True)  # this is the change

while True:
    event, values = window.read()
    if event == 'Save':
        print('clicked save')

    if event == sg.WIN_MAXIMIZED:  # I just made this up, and it does not work. :)
        window.maximize()

    if event == sg.WIN_CLOSED:
        break

【问题讨论】:

    标签: python pysimplegui


    【解决方案1】:

    将 tkinter 事件添加到窗口会导致窗口大小更改时回调

    import PySimpleGUI as sg
    
    
    layout = [[sg.Button('Save')]]
    window = sg.Window('Window Title',
                       layout,
                       default_element_size=(12, 1),
                       resizable=True,finalize=True)  # this is the chang
    window.bind('<Configure>',"Event")
    
    while True:
        event, values = window.read()
        if event == 'Save':
            print('clicked save')
    
        if event == "Event":
            print(window.size)
    
        if event == sg.WIN_CLOSED:
            print("I am done")
            break
    

    【讨论】:

    • +1 用于提及 window.size。它可用于创建非 tkinter 特定解决方案(使用 window.read(timeout=100) 并检查更改的大小)
    【解决方案2】:

    你需要绑定"&lt;Configure&gt;"事件来查看缩放事件。

    import PySimpleGUI as sg
    
    layout = [[sg.Text('Window normal', size=(30, 1), key='Status')]]
    window = sg.Window('Title', layout, resizable=True, finalize=True)
    window.bind('<Configure>', "Configure")
    status = window['Status']
    
    while True:
    
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == 'Configure':
            if window.TKroot.state() == 'zoomed':
                status.update(value='Window zoomed and maximized !')
            else:
                status.update(value='Window normal')
    
    window.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2014-01-01
      • 1970-01-01
      • 2016-11-07
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多