【问题标题】:Programatically select item in Listbox in PySimpleGUI在 PySimpleGUI 中以编程方式选择列表框中的项目
【发布时间】:2021-07-08 16:28:55
【问题描述】:

有没有办法以编程方式在 PySimpleGUI 的列表框中选择项目?我想在按下键盘上的键时推进所选项目

【问题讨论】:

  • “以编程方式”是什么意思?例如,您是否在询问您有一个国家列表框,如果用户选择了该列表框并按 C,它会将它们带到第一个 C ex。加拿大?或者您是在询问用户是否填写了字段并按 ex。 A 它会自动选择与“A”关联的列表项?
  • 用户按下右键,然后在列表框中选择下一个项目,但是这些示例中的任何一个都对我有用。我只需要知道如何告诉我的列表框应该在不使用鼠标的情况下选择列表框中的哪个项目
  • 方法 set_value of sg.Listbox 设置列表框突出显示的选项。
  • sg.Listbox 的方法update 中的选项set_to_index 以突出显示指示的项目。

标签: python-3.x pysimplegui


【解决方案1】:

您可以使用方法set_valueupdate来设置项目选择。

from random import choice
import PySimpleGUI as sg

sg.theme("DarkBlue")
sg.set_options(font=('Courier New', 12))

data = [
    'Ronald Reagan', 'Abraham Lincoln', 'George Washington', 'Andrew Jackson',
    'Thomas Jefferson', 'Harry Truman', 'John F. Kennedy', 'George H. W. Bush',
    'George W. Bush', 'John Quincy Adams', 'Garrett Walker', 'Bill Clinton',
    'Jimmy Carter', 'John Adams', 'Theodore Roosevelt', 'Frank Underwood',
    'Woodrow Wilson',
]

layout = [
    [sg.Listbox(data, size=(max(map(len, data))+2, 10), key='LISTBOX')]
]

window = sg.Window('Title', layout, finalize=True)
listbox = window['LISTBOX']

while True:
    event, values = window.read(timeout=500)
    if event == sg.WIN_CLOSED:
        break
    if event == '__TIMEOUT__':
        index = choice(range(len(data)))
        listbox.update(set_to_index=[index], scroll_to_index=index)

window.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多