重点

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的规范及特殊用法)的更多相关文章

  1. GitHub开源库排名一百的简单介绍,值得收藏!

    GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub ...

  2. JS获取各种宽度、高度的简单介绍:

    JS获取各种宽度.高度的简单介绍: scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获 ...

  3. c语言描述简单的线性表,获取元素,删除元素,

    //定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...

  4. JavaScript通过元素id和name直接获取元素的方法

    概览: 偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用. 虽然说这种用法不是 ...

  5. jquery选择器 之 获取父级元素、同级元素、子元素

    jquery选择器 之 获取父级元素.同级元素.子元素 一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div" ...

  6. jquery选择器 之 获取父级元素、同级元素、子元素(转)

    一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="href_fir& ...

  7. jquery选择器 之 获取父级元素、同级元素、子元素 - yes的日志 - 网易博客

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  8. Jquery遍历之获取子级元素、同级元素和父级元素

    Jquery遍历之获取子级元素.同级元素和父级元素 Jquery的遍历,其实就当前位置的元素相对于其他元素的位置的关系进行查找或选取HTML元素.以某项选择开始,并沿着这条线进行移动,或向上(父级). ...

  9. js和jquery获取父级元素、子级元素、兄弟元素的方法{转}

    先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当成DOM元素   原生的 ...

  10. Javascript JQuery获取当前元素的兄弟元素/上一个/下一个元素(转)

    var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; //获得s的下一个 ...

随机推荐

  1. win10 wampserver升级 php7.0至 php7.2

    1.去官网下载php7.2 下载地址: https://windows.php.net/download#php-7.0 2.下载安装 visual c++ 2017 或  visual c++ 20 ...

  2. 学习JavaScript第一周

    三种输出方式,console.log.element.write.alert(): 简单数据类型:数值型.字符串型.布尔类型.undefined.null 复杂数据类型:对象 数据类型的转换:字符串转 ...

  3. mysql_记录操作

    在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及 ...

  4. 使用navicat连接本地数据库时,出现错误1251错误

    在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication protocol r ...

  5. element ui 点击选中表头并改变表头样式

    前言: header-cell-style 表头单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style. Function({row, colum ...

  6. JAVA 学习打卡 day1

    2022-04-21 21:03:26 1.java程序的注释 (1)单行注释,就是在注释内容前面加双斜线(//) (2)多行注释,就是在注释内容前面以单斜线加一个星形标记(/*)开头,并在注释内容末 ...

  7. OperationContext

    public void Add(double x, double y) { double result = x + y; ICallback callback = OperationContext.C ...

  8. 深入理解C++的型别推导

    所谓型别推导,指的是我们在为变量赋予类型时不必再显式声明,编译器可以根据代码来自动推导类型.C++11中有两种型别推导的场景:模板和auto.下面我们来一一解析. 模板的型别推导 模板在C++中的应用 ...

  9. UAC的详细讲解(转载)

    win32中也有对UAC的操作方法 网址:https://blog.csdn.net/zuishikonghuan/article/details/46965159?locationNum=7& ...

  10. CentOS 7 时区设置 EST和CST设置

    1. https://blog.csdn.net/allway2/article/details/102995747 CentOS 7 时区设置# timedatectl status      Lo ...