python - 使用进程更新 gui 项目
问题描述
我正在尝试为我的应用程序制作一个 GUI,但遇到了一个问题:使用PySimpleGUI
我必须首先定义布局,然后才显示整个窗口。现在代码是这样的:
import PySimpleGUI as sg
layout = [[sg.Text('Input:')],
[sg.Input(do_not_clear=False)],
[sg.Button('Read'), sg.Exit()],
[sg.Text('Alternatives:')],
[sg.Listbox(values=('value1', 'value2', 'value3'), size=(30, 2))]]
window = sg.Window('Alternative items', layout)
while True:
event, values = window.Read()
if event is None or event == 'Exit':
break
print(values[0])
window.Close()
是否可以仅在按下按钮Listbox
后显示?Read
因为我只会Listbox
在输入后获得值。也许有可能在按钮事件之后用新值更新列表框?
解决方案
确实可以在按钮事件之后用新值更新列表框。我只需要在你的代码中添加几行就可以了。
任何时候你想改变现有窗口中元素的值,你都可以使用元素的update
方法。查看更新元素部分下的包文档http://www.PySimpleGUI.org。
隐藏元素是可能的,但不推荐。相反,创建一个新窗口并关闭旧窗口。GitHub 上有许多演示程序,向您展示如何执行多个窗口。
import PySimpleGUI as sg
layout = [[sg.Text('Input:')],
[sg.Input(do_not_clear=False)],
[sg.Button('Read'), sg.Exit()],
[sg.Text('Alternatives:')],
[sg.Listbox(values=('value1', 'value2', 'value3'), size=(30, 2), key='_LISTBOX_')]]
window = sg.Window('Alternative items', layout)
while True:
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED or event == 'Exit':
break
if event == 'Read':
window.Element('-LISTBOX-').update(values=['new value 1', 'new value 2', 'new value 3'])
window.close()
推荐阅读
- node.js - npm install bcrypt@3.0.6 使用节点 6.12.1 失败
- sql-server - 使用一个表中的 id 连接 4 个表并为 2 个表求和数量
- php - 如何通过 jQuery AJAX 将 php 变量拉入 js 对象的属性中?
- kubernetes - 如何获取部署在 Kubernetes 中的应用程序的延迟?
- algorithm - 如何在有效的时间内解决 Kakurasu Puzzle?
- ios - 在 Swift 中创建常量文件的最佳方法是什么?请检查说明
- bit - 什么是位设置“高”?简单解释
- android - 如何获取连接在同一网络中的主机的操作系统名称
- python - sqlalchemy python中的Blob文件
- go - 无法获取环境值