【发布时间】:2021-06-07 04:28:10
【问题描述】:
所以我一直在寻找这个问题的答案很长一段时间。抱歉,如果我在这里忽略了一些东西。
我想创建两个列表框,您可以在其中将值从一个列表框移动到另一个列表框,为这些值创建您自己的顺序。这是因为我正在尝试为 API 制作 GUI,值的顺序将最终决定维度/指标标题的顺序,这非常重要。
这是我尝试采用的方法来实现这一点,但是,每次按下“添加”按钮时,TEST 对象似乎都会覆盖其列表,而我希望它追加:
import PySimpleGUI as sg
list1 = ["a", "b", "c"]
layout = [[sg.Text("Demo")],
[sg.Listbox(values=list1, size=(30,6), enable_events=True, key="-LIST-"), sg.Button("Add", enable_events=True, key="-BUTTON-"), sg.Listbox(values=[], size=(30,6), key="-LIST2-")],
[sg.Cancel("Exit")]]
window = sg.Window("Beta", layout=layout, background_color="#272533", size=(650, 450))
while True:
event, values = window.read()
if event == "Exit" or event == sg.WIN_CLOSED:
break
if event == "-BUTTON-":
TEST = []
TEST.append(values["-LIST-"])
window["-LIST2-"].update(TEST)
print(TEST)
window.close()
【问题讨论】:
-
values['-LIST-']返回所选项目的值列表。在这里,最好使用get_indexes()来获取所选项目的索引。如果要移动,则按索引删除list1的项目,并按索引将项目插入list2,更新sg.List。请记住在对某项进行操作之前检查是否选择了任何项。 -
嗨,Jason,谢谢你,这真的很有帮助!
标签: listbox pysimplegui