PySimpleGui:如何将值从一个列表框添加到另一个

如何解决PySimpleGui:如何将值从一个列表框添加到另一个

所以我一直在寻找这个问题的答案已经有一段时间了。抱歉,如果我只是在这里忽略了一些东西。

我想创建两个列表框,您可以在其中将值从一个列表框移动到另一个列表框,从而为这些值创建您自己的顺序。这是因为我正在尝试为 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",key="-BUTTON-"),sg.ListBox(values=[],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()

解决方法

谢谢 Jason,我设法设置了两个列表框,这样您就可以将项目从一个框移动到另一个框,从而使用 get_indexes() 创建您想要的任何项目顺序。

基本上我从一个空列表开始,然后使用 get_indexes() 来查找用户在初始列表中确定的值的索引。然后我使用 pop 函数将该值附加到空列表中,以便将其从初始列表中删除。然后我必须更新两个窗口,以便在用户移动下一个值时更新索引。

这是我用来让它工作的代码。它可能不是最漂亮或最高效的(我对 python 很陌生)但它确实有效!如果有任何关于如何使其更简洁的建议,我们将不胜感激!

import PySimpleGUI as sg

list1 = ['a','b','c']
list2 = []


layout = [[sg.Text("Demo")],[sg.Listbox(values=list1,size=(30,6),enable_events=True,key="-LIST-"),sg.Button("Add",key="-BUTTON-"),sg.Button("Remove",key="-BUTTON2-"),sg.Listbox(values=list2,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-":
        INDEX = int(''.join(map(str,window["-LIST-"].get_indexes())))
        list2.append(list1.pop(INDEX))
        window["-LIST2-"].update(list2)
        window["-LIST-"].update(list1)

    if event == "-BUTTON2-":
        INDEX = int(''.join(map(str,window["-LIST2-"].get_indexes())))
        list1.append(list2.pop(INDEX))
        window["-LIST2-"].update(list2)
        window["-LIST-"].update(list1)

window.close()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?