点击按钮,打开新窗口

该文章展示了如何使用PySimpleGUI库创建和管理多个窗口。方式一中,点击按钮会在主窗口外打开新窗口。在方式二中,有两个方案:一是新窗口打开后,原窗口保持活跃;二是新窗口打开时,原窗口隐藏。这两种方法都涉及窗口的显示、激活和关闭事件的处理。
摘要由CSDN通过智能技术生成

方式一

点击按钮触发加载一个新的窗口

import PySimpleGUI as sg

# Define the layout of the main window
layout = [[sg.Button('Open Window')]]

# Create the main window
window = sg.Window('Main Window', layout)

# Event loop to process events and get user input
while True:
    event, values = window.read()
    print('YUYUI')
    if event == sg.WIN_CLOSED:
        break
    elif event == 'Open Window':

        new_layout = [[sg.Output(size=(60, 30), key='-OUTPUT-',visible=False)],
                      [sg.Button('Log Something'), sg.Button('Exit')]]


        new_window = sg.Window('New Window', new_layout,no_titlebar=True,location=(200,200))
        while True:
            event, values = new_window.read()

            new_window['-OUTPUT-'].update(visible=True, append=True)
            if event == sg.WIN_CLOSED or event == 'Exit':
                new_window.close()
                break

# Close the main window
window.close()

方式二:激活一个,另外一个窗口也展示

激活其中一个窗口,当点击按钮有触发事件,将未激活的窗口激活

def ii():
    import PySimpleGUI as sg

    # Design pattern 2 - First window remains active

    layout = [[sg.Text('Window 1'), ],
              [sg.Input(do_not_clear=True)],
              [sg.Text(size=(15, 1), key='-OUTPUT-')],
              [sg.Button('Launch 2'), sg.Button('Exit')]]

    win1 = sg.Window('Window 1', layout)

    win2_active = False
    while True:
        ev1, vals1 = win1.read(timeout=100)
        win1['-OUTPUT-'].update(vals1[0])
        if ev1 == sg.WIN_CLOSED or ev1 == 'Exit':
            break

        if not win2_active and ev1 == 'Launch 2':
            win2_active = True
            layout2 = [[sg.Text('Window 2')],
                       [sg.Button('Exit')]]

            win2 = sg.Window('Window 2', layout2)

        if win2_active:
            ev2, vals2 = win2.read(timeout=100)
            if ev2 == sg.WIN_CLOSED or ev2 == 'Exit':
                win2_active = False
                win2.close()

方式二:激活一个,另外一个窗口不会展示

def jj():


    # Design pattern 1 - First window does not remain active

    layout = [[sg.Text('Window 1'), ],
              [sg.Input(do_not_clear=True)],
              [sg.Text(size=(15, 1), key='-OUTPUT-')],
              [sg.Button('Launch 2')]]

    win1 = sg.Window('Window 1', layout)
    win2_active = False
    while True:
        ev1, vals1 = win1.read(timeout=100)
        if ev1 == sg.WIN_CLOSED:
            break
        win1['-OUTPUT-'].update(vals1[0])

        if ev1 == 'Launch 2' and not win2_active:
            win2_active = True
            win1.Hide()
            layout2 = [[sg.Text('Window 2')],  # note must create a layout from scratch every time. No reuse
                       [sg.Button('Exit')]]

            win2 = sg.Window('Window 2', layout2)
            while True:
                ev2, vals2 = win2.read()
                if ev2 == sg.WIN_CLOSED or ev2 == 'Exit':
                    win2.close()
                    win2_active = False
                    win1.UnHide()
                    break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值