PySimpleGUI 表元素。如何读取选定的行?

2024-01-30

我是 Python 的初学者,甚至是 PySimpleGui 的初学者,我非常喜欢使用它来创建带有 GU 界面的小型应用程序。我遇到的问题是关于表格元素的。到目前为止,我已成功使用 sqlite 数据库中的数据填充表元素。一旦表格准备好数据,我就可以突出显示特定行。由于我不知道表元素触发了任何事件,因此我放置了一个按钮,在选择一行后单击该按钮,然后执行与单击事件关联的代码。表格准备就绪,选择了行,单击了按钮,现在,如何获取整个行的值?我尝试过“值[”mytable']" 但结果有点像表索引。我想要一个值列表。这可能吗?感谢您的帮助。

layout:

data_values = []
data_headings = ['File ID', 'Type', 'Description', 'Remarks']
data_values.append(['', '', '', ''])
data_cols_width = [5, 8, 35, 35]
tab5_layout = [

[sg.Table(values=data_values, headings=data_headings,
                            max_col_width=65,
                            col_widths=data_cols_width,
                            auto_size_columns=False,
                            justification='left',
                            num_rows=6, key='_filestable_')],
    
[sg.Button('Select Row', key='_rowselected_')]

event:

if event == '_rowselected_':
    te1 = values['_filestable_']
    print('Event triggered : ', te1)

当使用 PySimpleGUI 中以前未使用过的元素时,查看项目提供的一些材料会很有帮助。

一是演示程序。这些旨在让您快速开始使用功能。另一个是调用参考文档。您可以通过文档字符串访问相同的信息(使用 PyCharm 时按 Control+Q)。

我不知道表格元素触发了任何事件

如果一个元素能够生成事件但默认情况下不这样做(如按钮或菜单),那么您将找到一个参数enable_events.

对于 Table 元素,您会发现文档字符串(因此调用引用也)具有 table 元素的参数:

enable_events – 打开元素特定事件。单击行时发生表事件

在您的示例中,您需要做的就是将此参数添加到布局中的表中。

[sg.Table(values=data_values, headings=data_headings,
                            max_col_width=65,
                            col_widths=data_cols_width,
                            auto_size_columns=False,
                            justification='left',
                            enable_events=True,
                            num_rows=6, key='_filestable_')],

EDIT:

我喜欢提供有启发性的答案how去解决问题,而不是只是脱口而出答案。这不仅会在这种情况下对您有所帮助,而且在使用 PySimpleGUI 包时也会对其他情况有所帮助。

让我们更深入地了解表的值条目是如何工作的。

表的值字典中的条目是所选行的列表。

如果您看到如下结构,请务必小心:

data_values[values['_filestable_']]

因为它不会运行。它会崩溃。

这些值不能用于直接在源表中查找值。尝试这样做会产生一个错误,即列表索引必须是整数或切片。

由于在此示例中已为表启用了事件,因此您可以在事件循环中检查该事件并适当地处理该事件:

if event == '_filestable_':
    data_selected = [data_values[row] for row in values[event]]

data_selected 将是原始数据行的列表。

如果您希望限制用户一次只能选择 1 行,那么您可以设置select_mode创建表时的参数。

select_mode=sg.TABLE_SELECT_MODE_BROWSE

浏览将允许单行而不是默认的多行。通过设置 BROWSE 的选择模式,您可以假定您的data_selected列表只有 1 个条目,因此data_selected[0]将是该条目。或者你可以使用data_selected[0]仅选择第一行。

最后一句话...

PySimpleGUI 文档有一个关于支持的部分,首先解释不建议使用诸如 SO 之类的网站。建议出于多种原因避免这些,包括基本缺乏知识。对于几乎所有活跃的 GitHub 项目,向该项目提交问题往往会提供高质量的答案。大多数开发人员都希望提供帮助,并希望了解可能意味着文档不清楚的问题或常见问题。

祝你的计划顺利!希望一切顺利。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySimpleGUI 表元素。如何读取选定的行? 的相关文章

随机推荐

  • 在 Jinja 模板中使用 Ansible 控制主机的 IP 地址

    我想将 IP 地址插入到 Ansible playbook 使用的 J2 模板中 该IP地址是not正在配置的主机的地址 以及完成配置的主机的 IP 到目前为止我发现的所有内容都涵盖了使用与所配置的主机相关的变量 事实 换句话说 我要插入的
  • .NET 4.0 与 3.5 运行时性能

    现在 VS2010 已处于 RC 状态 距离 2 0 以来第一个新 核心 运行时版本的发布似乎只剩下几周的时间了 虽然我没有立即升级的需求 但我想知道是否有人在两者之间进行了一些性能测试 基准测试 如果有任何明显的性能提升 那么重新编译现有
  • “FirebaseAnalytics.Param.SIGN_UP_METHOD”无法在控制台中保存“值”以及“事件名称”

    我正在使用此代码来分析用户正在使用的sign up方法 Bundle bundle new Bundle bundle putString FirebaseAnalytics Param SIGN UP METHOD sign up met
  • Visio 形状 - 获取 X、Y 位置

    我已成功使用以下代码以编程方式将形状插入到 Visio 中 ActiveWindow Page Drop VisioApp Documents ORGCH M VSS Masters ItemU Executive 5 433071 7 5
  • App Engine Java 8 标准环境中的 Servlet 异步处理支持

    我正在尝试使用 GAE J8 标准环境 无可扩展环境 的 servlet 3 1 中的异步处理支持 基本上我有一个 servlet 注释为 WebServlet name MyServletName urlPatterns dosometh
  • 如何在javafx代码中添加Anchorpane约束?

    我知道您可以在 fxml 中添加 Anchor Pane 包含 例如 AnchorPane bottomAnchor 0 0 但是您可以在 java 代码中设置 AnchorPane 约束吗 AnchorPane 上有一组静态方法 您可以使
  • C++/CLI MSIL 程序集中的指针数组

    我正在尝试包装一些遗留的 C 代码 以便与在 NET Core 上运行的 C 一起使用 我在用着这里给出的方法 https stackoverflow com a 9004833创建编译为纯 MSIL 的 C 包装器 它对于简单的函数运行良
  • 在什么情况下,finally {} 块不会执行?

    在Java中try catch finally 块 内的代码finally 通常被认为 保证 运行 无论 try catch 中发生什么 然而 我知道至少在两种情况下它会not执行 If System exit 0 叫做 或者 如果异常一直
  • WildFly 中未找到 Nashorn 类

    我需要从 WildFly 中运行的 Web 应用程序内的 nashorn 访问内部类 以下代码在我的机器上运行良好 public class NashornTest public static void main String args t
  • 休眠验证器。如何使用@Valid注解?

    目的是什么 Valid将其放在方法参数级别时的注释 public void Valid Person p 我创建了一个测试 并将无效对象传递给该方法 但没有任何反应 我希望得到一个例外 The Valid对象上的注释指示验证框架处理带注释的
  • CMUSphinx 实时语音识别太慢?

    CMU Sphinx 识别实时语音太慢 不知道你有什么办法增强它吗 这是我的配置 configuration setAcousticModelPath WSJ 8gau 13dCep 16k 40mel 130Hz 6800Hz confi
  • JavaScript RegExp 中的 (*SKIP)(*FAIL) 解决方法

    我有一个在 regex101 com 中运行良好的正则表达式模式 a SKIP FAIL bword b 我正在尝试将其设为正则表达式 以便可以在replace JavaScript 中的函数 JavaScript 代码行是 var reg
  • 在循环中使用 numpy load 时内存溢出

    循环加载 npz 文件会导致内存溢出 取决于文件 列表长度 以下似乎都没有帮助 删除文件中存储数据的变量 使用 mmap 调用 gc collect 垃圾收集 以下代码应该重现该现象 import numpy as np generate
  • 如何检查iOS版本是iOS 6? [复制]

    这个问题在这里已经有答案了 可能的重复 检查 iPhone iOS 版本 https stackoverflow com questions 3339722 check iphone ios version 我想在 iOS 中检查 iOS
  • 如何实现A*算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 C 中简单实现 AN A 星 算法应该采用哪种方法 本文 https web archive org web 2017050503
  • numpy.sum 性能取决于轴

    对 numpy 数组中的维度求和时 第一个轴和最后一个轴之间是否存在性能差异 具体来说 考虑以下代码 其中sum1 and sum2会执行得更快吗 import numpy as np a np ones 1000 200 b np one
  • 是否可以限制每秒运行的 goroutine 数量?

    我有一个 URL 列表 我需要使用 goroutine 来同时触发 HTTP 请求 是否有办法检查并限制每秒发送的 HTTP 请求数量 Go 中的一个非常简单的版本是对漏桶 https en wikipedia org wiki Leaky
  • 如何从子查询返回多个值

    SELECT state business a report FROM base WHERE state IN SELECT a state FROM heart a join SELECT CAST MAX percent adults
  • 按 ID 累积总和,有滞后

    我想通过 id 创建一个累积和 但是 它不应该对属于正在计算的行的值求和 我已经尝试过使用 cumsum 了 但是 我不知道如何添加一条语句 指定不添加求和行的金额 我正在寻找的结果列是第三列 名为 sum 例如 对于 id 1 第一行 s
  • PySimpleGUI 表元素。如何读取选定的行?

    我是 Python 的初学者 甚至是 PySimpleGui 的初学者 我非常喜欢使用它来创建带有 GU 界面的小型应用程序 我遇到的问题是关于表格元素的 到目前为止 我已成功使用 sqlite 数据库中的数据填充表元素 一旦表格准备好数据