首页 > 编程问答 >我无法使用 PySimpleGUI 打开第三个窗口

我无法使用 PySimpleGUI 打开第三个窗口

时间:2024-07-28 14:36:05浏览次数:14  
标签:python pysimplegui

我无法创建第三个窗口。代码工作没有错误,但它不显示代码结束的窗口

当前我正在尝试使其显示一个复选框表,供人们选择座位。我测试过它是否根本没有运行。把 print 放在它后面,它就会打印出来。我也尝试让它显示简单的文本,但这也不起作用。 下面是代码:

layout3 = [[sg.Text('Test')]
window3 = sg.Window('Choosing seats',layout3,element_justification='c')

我无法执行和运行代码来测试其功能,因为提供的信息不足。在 PySimpleGUI 中创建和管理窗口时,了解代码的执行流程至关重要。

但是,根据提供的描述,我怀疑该问题与 PySimpleGUI 中窗口事件循环的处理方式有关。

在 PySimpleGUI 中,窗口不会自动显示和更新。需要运行一个事件循环,该循环侦听事件(如按钮单击、窗口关闭等)并相应地更新窗口。

为了解决的问题,需要将第三个窗口的创建和事件循环集成到主代码结构中。以下是如何操作的示例:

import PySimpleGUI as sg

# ---  定义布局  --- 
layout1 = [[sg.Button('打开窗口 2')]]
layout2 = [[sg.Button('打开窗口 3')]]
layout3 = [[sg.Text('测试')]]

# --- 创建第一个窗口  --- 
window1 = sg.Window('窗口 1', layout1)

# --- 事件循环窗口 1  --- 
while True:
    event, values = window1.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == '打开窗口 2':
        window1.hide()
        # --- 创建第二个窗口  --- 
        window2 = sg.Window('窗口 2', layout2)
        # --- 事件循环窗口 2  --- 
        while True:
            event, values = window2.read()
            if event == sg.WIN_CLOSED:
                break
            elif event == '打开窗口 3':
                window2.hide()
                # --- 创建第三个窗口  --- 
                window3 = sg.Window('选择座位', layout3, element_justification='c')
                # --- 事件循环窗口 3  --- 
                while True:
                    event, values = window3.read()
                    if event == sg.WIN_CLOSED:
                        break
                window3.close()
        window2.close()
window1.close()

在此代码中:

  1. 我们首先定义三个窗口的布局 ( layout1 layout2 layout3 )。

  2. 我们创建第一个窗口 ( window1 ) 并运行一个事件循环。

  3. window1 的事件循环中,我们侦听“打开窗口 2”按钮事件。

  4. 当按下“打开窗口 2”按钮时,我们创建并显示 window2 ,并运行另一个事件循环。

  5. 同样,在 window2 的事件循环中,我们侦听“打开窗口 3”按钮事件。

  6. 当按下“打开窗口 3”按钮时,我们创建并显示 window3 ,并运行另一个事件循环。

此结构确保每个窗口在单击相应按钮后创建并具有自己的事件循环以处理其事件。

请记住,这只是一个简化的示例,可能需要根据的应用程序逻辑修改它。关键是要了解事件循环对于 PySimpleGUI 中的窗口管理至关重要。

标签:python,pysimplegui
From: 78802938

相关文章

  • SSL 证书验证失败 - 雅虎财经 API - Python
    我正在尝试从雅虎财经获取数据,但收到SSL错误。代码如下:importrequestsresponse=requests.get("https://query1.finance.yahoo.com/v8/finance/chart/META",verify=True)print(response.status_code)出现以下错误:urllib3.exceptions.SSLError:[SSL:CERTIFICATE_......
  • 【学习笔记】Matlab和python双语言的学习(熵权法)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、熵权法的基本概念二、熵权法的基本步骤1、构建决策矩阵2、数据标准化3、计算指标的比重4、计算信息熵5、计算权重6、计算综合得分三、代码实现----Matlab四、代码实现----python总结......
  • 【python】网络通信编程例子
    以下是一个简单的Python示例,展示了如何在Linux下使用套接字进行基本的网络通信,包括创建服务器和客户端。服务器端代码importsocket#创建一个IPv4TCP套接字server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定服务器地址和端口server_addr......
  • 如何将Python版本从3.9降级到3.7?
    我正在开发RaspberryPi。这些是我的操作系统信息:pi@raspberrypi:~$uname-marmv7lpi@raspberrypi:~$cat/etc/os-releasePRETTY_NAME="RaspbianGNU/Linux11(bullseye)"NAME="RaspbianGNU/Linux"VERSION_ID="11"VERSION="11(bullseye)......
  • Python终端输出彩色字符方法
    colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,完全兼容linux和windows各个版本。 1.Python3.x中安装colorama模块: pipinstallcolorama'''可用格式常数:【颜色RED,GREEN都需要大写】Fore:BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHI......
  • 我无法安装 pygame 模块,所以我尝试观看视频,它告诉我这样做。在那个视频中他得到了 pyt
    c:\User\admin>piplistSyntaxError:unexpectedcharacterafterlinecontinuationcharacter我试图获取python模块列表,但出现语法错误出现SyntaxError:unexpectedcharacterafterlinecontinuationcharacter错误是因为你的用户名中包含一个特殊字符......
  • python第五节--conda命令
    这里写自定义目录标题基本命令环境管理包管理环境文件环境变量Conda配置高级操作常见问题基本命令检查Conda版本:conda--version更新Conda:condaupdateconda环境管理创建新环境:condacreate--namemyenv创建包含特定Python版本的新环境:conda......
  • 如何使用python向另一台计算机发送请求
    基本上我有一个聊天室,我将把它变成一个网络(我知道这听起来没有多大意义),但基本上我想知道是否可以让python脚本捕获计算机上的所有传出请求并将其发送到另一台计算机(c2)。然后我希望c2自己发出请求。这是对我正在做的事情的淡化解释,但任何帮助都会很棒!当然可以!虽然从头......
  • AttributeError:'int'对象没有属性'index'(python)
    我正在Python上进行“猜单词”,但我无法弄清楚这个错误。AttributeError:'int'objecthasnoattribute'index'(python)它在线上给了我一个错误letterIndex=word.index(guess)defcheckLetter(word):blanks='_'*len(str(word))print('W......
  • 尝试在Python中使用for循环来输出大于或等于序列中的数字
    这是我的Python代码:largest_so_far=-1print('before',largest_so_far)forthe_numin[9,41,12,3,74,15]:ifthe_num>largest_so_far:largest_so_far=the_numprint(largest_so_far,'isbiggerthan',the_num)......