重点
1获取元素的值
Input(key='mykey')
values['mykey']
2通过key查找元素 对象window['key']
3更新元素的值
window['key'](要更新的值)
window['key']。update()
4
假设您有一个带有输入元素网格的窗口。您可以使用它们的行和列位置作为键(元组)
key=(row, col)
然后,当您读取values
从调用返回给您的变量时,变量中的Window.read()
键values
将是您用于创建元素的任何内容。在这种情况下,您会将值读取为: values[(row, col)]
5key的规范
大多数时候,它们是简单的文本字符串。在演示程序中,键按以下约定编写:( _KEY_NAME_
下划线开头和结尾全部大写字母)或最近的约定是在开头和结尾使用破折号(例如'-KEY_NAME-'
)。您不必遵守约定,但遵守约定也不错,因为其他用户已经习惯了这种格式,并且在使用元素键时很容易发现。
正文
您将在文档的“调用参考”选项卡中找到有关元素和所有其他类和函数的信息。
“元素”是用于创建窗口的构建块。一些 GUI API 使用术语“Widget”来描述这些图形元素。因此,当引用 PySimpleGUI元素与底层 GUI 框架的Widget时,就很清楚了。PySimpleGUI 元素映射到 GUI 框架小部件,通常以一对一的方式。例如,文本元素是在 tkinter 中使用标签小部件实现的。
Tkinter 端口中的元素表
PySimpleGUI 的每个端口都有一组核心元素以及特定于端口的元素。一些特定于端口的元素包括 Qt 端口中的 Dial 元素和 tkinter 端口中的 Pane 元素。
元素名称 | 别名 | tkinter 小部件 | 描述 |
---|---|---|---|
文本 | T,文本 | tk.标签 | 一行或多行文本 |
输入 | 我,在,输入文本 | tk.Entry | 单行文本输入 |
组合 | DD, Drop, DropDown, InputCombo | ||
选项菜单 | 输入选项菜单 | ||
多行 | ML, 多线 | ||
输出 | |||
收音机 | R,拉德 | ||
复选框 | CB、CBox、检查 | ||
旋转 | Sp | ||
按钮 | B, Btn | ||
图片 | 我是 | ||
帆布 | |||
柱子 | 科尔 | ||
框架 | 神父 | ||
标签 | |||
选项卡组 | |||
窗格 | |||
图形 | G | ||
滑块 | SL | ||
列表框 | LB, LBox | ||
菜单 | 菜单栏,菜单栏 | ||
菜单栏自定义 | |||
按钮菜单 | BM, B菜单 | ||
标题栏 | |||
进度条 | PBar, Prog, 进展 | ||
桌子 | |||
树 | |||
垂直分隔符 | VSep, VSeparator | ||
水平分隔符 | HSep,HS分离器 | ||
状态栏 | 酒吧 | ||
尺寸握把 | SGrip | ||
推 | P,拉伸 | ||
副推 | 副总裁,VStretch | ||
尺寸测量仪 |
布局辅助函数
您的窗口布局由元素列表组成。除了元素之外,这些布局帮助功能也可能出现在布局定义中
布局助手 | 描述 |
---|---|
别针 | 将元素“固定”到布局中的某个位置。如果元素从不可见过渡到可见,则 pin 确保元素位于正确的位置 |
顶部 | 将元素或元素行垂直对齐到行的顶部 |
底部 | 将元素或元素行垂直对齐到行的底部 |
中心 | 将元素或元素行垂直对齐到行的中心 |
- 文本
- 单线输入
- 包括以下类型的按钮:
- 文件浏览
- 文件夹浏览
- 日历选择器
- 日期选择器
- 阅读窗口
- 关闭窗口(“按钮”和所有快捷按钮)
- 即时的
钥匙
在 PySimpleGUI 中,键是一个非常重要的概念。
如果你打算用你的 GUI 做任何超出基本东西的事情,那么你需要了解键。
您可以将“键”视为元素的“名称”。或“标识符”。这是您使用 PySimpleGUI 库识别和讨论元素的一种方式。它与字典键完全相同。它们对于窗口必须是唯一的。
key
使用参数创建元素时指定键。
键的使用方式如下: * 创建元素时指定 * 作为事件返回。如果一个元素导致一个事件,它的键将被使用 * 在values
从返回的字典中window.read()
* 进行更新(更改),到窗口中的元素
在您将键放入元素的定义中后,从中返回的值window.read
将使用该键告诉您该值。例如,如果您的布局中有一个输入元素:
Input(key='mykey')
你的阅读看起来像这样: event, values = Read()
然后要从读取中获取输入值,它将是: values['mykey']
如果要对元素调用 Update,也可以使用相同的键。请参阅更新元素部分以了解该用法。要在给定元素键的情况下查找元素对象,可以调用 window 方法find_element
(也写FindElement
为 , element
),也可以使用更常见的查找机制:
window['key']
虽然您经常会在本文档的示例中看到以字符串形式编写的键,但要知道键可以是ANYTHING。
假设您有一个带有输入元素网格的窗口。您可以使用它们的行和列位置作为键(元组)
key=(row, col)
然后,当您读取values
从调用返回给您的变量时,变量中的Window.read()
键values
将是您用于创建元素的任何内容。在这种情况下,您会将值读取为: values[(row, col)]
大多数时候,它们是简单的文本字符串。在演示程序中,键按以下约定编写:( _KEY_NAME_
下划线开头和结尾全部大写字母)或最近的约定是在开头和结尾使用破折号(例如'-KEY_NAME-'
)。您不必遵守约定,但遵守约定也不错,因为其他用户已经习惯了这种格式,并且在使用元素键时很容易发现。
如果您有一个元素对象,要找到它的键,请访问该.Key
元素的成员变量。这假设您已经在变量中获得了元素。
text_elem = sg.Text('', key='-TEXT-')
the_key = text_elem.Key
默认键
如果您未能在元素上放置键,则会自动为您创建一个键。
对于Buttons
,按钮上的文本是该按钮的键。Text
元素将默认为文本的字符串(当启用事件并单击文本时)
如果元素是输入元素之一(将导致在返回值字典中生成条目)并且您未能指定一个,则将为其分配一个以数字 0 开头的数字。效果将如下如果即使使用字典,值也表示为列表。
菜单键
菜单项也可以有与之关联的键。有关这些特殊键的更多信息,请参阅菜单部分。它们与元素键不同。像所有元素一样,菜单元素具有这些元素键之一。各个菜单项键不同。
WRITE_ONLY_KEY
修饰符
有时您有Multiline
用作输出的输入元素(例如 )。这些元素的内容可能会变得很长。您不需要“读取”这些元素,这样做可能会不必要地返回大量数据。
要告诉 PySimpleGUI 您不希望元素在Window.read
被调用时返回值,请将字符串添加WRITE_ONLY_KEY
到您的键名中。
如果您的Multiline
元素最初是这样定义的:
sg.Multiline(size=(40,8), key='-MLINE-')
然后要关闭该元素的返回值,该Multiline
元素将这样编写:
sg.Multiline(size=(40,8), key='-MLINE-' + sg.WRITE_ONLY_KEY)
Key Errors - 关键错误恢复算法
在 PySimpleGUI 的主要 (tkinter) 端口中,从版本 4.27.0 开始(尚未在 PyPI 上......但在 GitHub 上作为 4.26.0.14+ 可用)
现在有 3 种对关键错误处理的控制和一个全新的关键报告时代。
SUPPRESS_ERROR_POPUPS = False
SUPPRESS_RAISE_KEY_ERRORS = False
SUPPRESS_KEY_GUESSING = False
您可以通过调用来修改这些值set_options
。
sg.set_options(suppress_raise_key_errors=False, suppress_error_popups=False, suppress_key_guessing=False)
它们的基本定义是: suppress_error_popups
- 禁止在 PySimpleGUI 本身中生成的错误弹出窗口不显示 suppress_raise_key_errors
- 如果未找到密钥或紧密匹配,则禁止引发密钥错误 suppress_key_guessing
- 如果您有密钥错误,则禁止密钥猜测算法
保留定义的默认值(全部False
),这是关键错误的工作方式。
这是本例中使用的程序:
import PySimpleGUI as sg
def main():
sg.set_options(suppress_raise_key_errors=False, suppress_error_popups=False, suppress_key_guessing=False)
layout = [ [sg.Text('My Window')],
[sg.Input(k='-IN-'), sg.Text(size=(12,1), key='-OUT-')],
[sg.Button('Go'), sg.Button('Exit')] ]
window = sg.Window('Window Title', layout, finalize=True)
while True: # Event Loop
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED or event == 'Exit':
break
window['-O U T'].update(values['-IN-'])
window.close()
def func():
main()
func()
有几点需要注意:
- 调用了多个级别的函数,而不仅仅是一个平面程序
- 明确定义了 2 个键,此时两者都是文本(我们稍后会更改它们)
- 有 2 个查找发生,一个与
window
另一个values
此键错误恢复算法仅适用于用于在窗口内查找键的元素键。键查找是一个普通的字典,因此该values
查找没有做任何花哨的事情。