pysimplegui之元素简单介绍(元素值得获取修改,key的规范及特殊用法)
重点
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
查找没有做任何花哨的事情。
pysimplegui之元素简单介绍(元素值得获取修改,key的规范及特殊用法)的更多相关文章
- GitHub开源库排名一百的简单介绍,值得收藏!
GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub ...
- JS获取各种宽度、高度的简单介绍:
JS获取各种宽度.高度的简单介绍: scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获 ...
- c语言描述简单的线性表,获取元素,删除元素,
//定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...
- JavaScript通过元素id和name直接获取元素的方法
概览: 偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用. 虽然说这种用法不是 ...
- jquery选择器 之 获取父级元素、同级元素、子元素
jquery选择器 之 获取父级元素.同级元素.子元素 一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div" ...
- jquery选择器 之 获取父级元素、同级元素、子元素(转)
一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="href_fir& ...
- jquery选择器 之 获取父级元素、同级元素、子元素 - yes的日志 - 网易博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- Jquery遍历之获取子级元素、同级元素和父级元素
Jquery遍历之获取子级元素.同级元素和父级元素 Jquery的遍历,其实就当前位置的元素相对于其他元素的位置的关系进行查找或选取HTML元素.以某项选择开始,并沿着这条线进行移动,或向上(父级). ...
- js和jquery获取父级元素、子级元素、兄弟元素的方法{转}
先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当成DOM元素 原生的 ...
- Javascript JQuery获取当前元素的兄弟元素/上一个/下一个元素(转)
var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; //获得s的下一个 ...
随机推荐
- QT动态库的创建和使用
QT动态库的创建和使用 步骤一: 创建一个库文件 Library 步骤二:进行动态库封装方法的实现 注意事项:要注意共享类均需要包含导出的宏定义 这个宏定义和导出向导的宏定义一致 宏定义: 向导文件: ...
- uniapp相关
1.uniapp官网 网址:https://uniapp.dcloud.net.cn/ 2.引入组件库 网址:https://www.uviewui.com/ 3.问题如下 (1)使用SwipeAct ...
- PTA最大子列和问题
给定K个整数组成的序列{ N1, N2, ..., NK },"连续子列"被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K."最大子列 ...
- 去除input框相关样式,只显示内容
<input /> css代码: .edit-input{ /* width: 20px; */ height: -webkit-fill-available; background: i ...
- if判断while循环
- awk统计命令
求和 cat file|awk '{sum+=$1} END {print "Sum = ", sum}' cat file|awk '{sum[$1]+=$2}END{for(c ...
- Javaheima21
Java 学习内容 XML XML解析技术 XPath 设计模式 在有些业务场景下,存储数据或者传输数据给别人的时候,数据需要满足优点的规范进行组织 XML文件存储的数据需要提取出来 如何方便的在XM ...
- JAVA 学习打卡 day2
2022-04-23 16:43:32 1.字符类型 (1)字符和整型之间的相互转换 给字符变量赋值可以使用数值和字符,它们都可以使程序正确地运行.要注意的是,字符要用一对单引号('')括起 (2)常 ...
- Q:oracle 日期筛选
一.oracle where条件日期筛选 两种方法:tochar和todate todate:将字符串按照指定的格式输出,得到的是日期类型. to_date('2019-12-01','yyyy-MM ...
- Excel 去除合并并保留原值的办法
部分Excel中,对行进行了合并.这个方便展示,但是筛选后数据展示会出现问题,需要去除合并,并在每行中保留原来的值. 1.先选择整行,并"取消单元格合并" 操作后出现大量的空值行. ...