PySampleGUI设计模式 “Persistent window”

较常用的GUI程序通常采用持久化窗口模式。读取数据但不关闭窗口,而是持续可见,作为输入输出信息的交换方式。

通过while True循环,对事件进行循环读取,达到窗口持久化的效果。

下例为一个持久化窗口,在输入框中输入内容,点击show按钮,输入内容会显示在第一行文本右侧。

import PySimpleGUI as sg


layout = [[sg.Text('Your typed chars appear here:'), sg.Text(size=(15,1), key='-OUTPUT-')],
          [sg.Input(key='-IN-')],
          [sg.Button('Show'), sg.Button('Exit')]]

window = sg.Window('Pattern 2B', layout)

while True:  # 窗口持久化
    event, values = window.read() # 读取窗口
    # 判断事件
    if event == sg.WIN_CLOSED or event == 'Exit': # 如果事件是关闭窗口或点击exit按钮,跳出循环
        break
    if event == 'Show': 
        # 通过key键['-OUTPUT-']获取窗口元素,然后通过update方法进行元素内容更新。
        window['-OUTPUT-'].update(values['-IN-'])

window.close() # 退出窗口