pysimplegui多窗口设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 12 11:39:42 2022
 
@author: Administrator
"""
 
import PySimpleGUI as sg
  
# Design pattern 2 - First window remains active
# 多窗口设计模式 1 - 两个窗口都处于活动状态
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' or ev1 == None:
        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'  or ev2 == None:
            win2_active  = False
            win2.close()
 
win1.close()
 
 
 
import PySimpleGUI as sg
# Design pattern 1 - First window does not remain active
# 多窗口设计模式 2 - 只有 1 个活动窗口
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' or ev1 == None:
        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)
        win1.hide()
  
    if win2_active:
        ev2, vals2 = win2.read(timeout=100)
        if ev2 == sg.WIN_CLOSED or ev2 == 'Exit'  or ev2 == None:
            win2_active  = False
            win2.close()
            win1.un_hide()
 
win1.close()
 
 
 
 
# 多窗口设计模式 2 - 只有 1 个活动窗口
import PySimpleGUI as sg
 
def make_window1():
    layout = [[sg.Text('Window 1'), ],
              [sg.Input(key='-IN-')],
              [sg.Text(size=(20, 1), key='-OUTPUT-')],
              [sg.Button('Launch 2'), sg.Button('Output')]]
 
    return sg.Window('Window 1', layout, finalize=True)
 
def make_window2():
    layout = [[sg.Text('Window 2')],
               [sg.Button('Exit')]]
    return sg.Window('Window 2', layout, finalize=True)
 
 
def main():
    window2 = None
    window1 = make_window1()
 
    while True:
        window, event, values = sg.read_all_windows()
        if event == sg.WIN_CLOSED and window == window1:
            break
 
        if window == window1:
            window1['-OUTPUT-'].update(values['-IN-'])
 
        if event == 'Launch 2' and not window2:
            window1.hide()
            window2 = make_window2()
 
        if window == window2 and (event in (sg.WIN_CLOSED, 'Exit')):
            window2.close()
            window2 = None
            window1.un_hide()
    window1.close()
 
main()           

  

 

posted on   andy_1  阅读(1029)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2018-09-12 windows中连接hive-客户端
2018-09-12 shell中后台进程管理: ps -aux 详解

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示