【问题标题】:Selecting Selected line in listbox python tkinter在列表框中选择选定的行 python tkinter
【发布时间】:2014-09-16 08:20:54
【问题描述】:

您好,我有一个关于 Python Tkinter 列表框的问题要问。当我选择值时,我必须在代码中添加什么以便列表框返回值?不需要多选。或者,我可以添加一个按钮来执行命令,同时将列表框中的返回值放入命令中?我正在使用 Python 2.7,而 lis 是我的数组的名称。感谢您的关心和帮助!

master = Tk()

listbox = Listbox(master)
listbox.pack()

listbox.insert(END, "Please select:")

for p in lis:
    listbox.insert(END, p)

master.mainloop()

【问题讨论】:

    标签: python python-2.7 listbox tkinter


    【解决方案1】:

    例如,您可以添加按钮来检查选择

    from Tkinter import *
    
    def check_list():
        try:
            s = lb.selection_get()
            print 'selected:', s
        except:
            print 'no selection'
    
    master = Tk()
    
    lb = Listbox(master)
    lb.pack()
    
    lb.insert(END, "Please select:")
    for p in range(10):
        lb.insert(END, p)
    
    but = Button(master, text="Check", command=check_list)
    but.pack()
    
    master.mainloop()
    

    如果您需要 command 中的一些参数,请使用 lambda

    command=lambda:my_function(argument)
    

    顺便说一句:当你在for 循环中使用command= 中的参数时,请注意它

    这将价值10 代替i 全部my_function(i)

    for i in range(10):
         ... command=lambda:my_function(i)
    

    这按预期工作

    for i in range(10):
         ... command=lambda x=i:my_function(x)
    

    编辑:

    lb.selection_get() 提供来自列表框的文本(并使用\n 分隔多选中的元素)并在没有选择时引发错误。

    lb.curselection() 如果没有选择,则给出索引列表和空列表。

    def check_list_2():
        s = lb.curselection()
        if not s:
            print 'no selection'
        else:
            for x in s:
                print 'selected index:', x
                print 'selected text:', lb.get(x)
    

    【讨论】:

    • 正是我要找的东西。非常感谢!
    • print 'no selection'之后添加master.destroy(),窗口也会关闭。
    • @Alper 我不想关闭它
    • @furas 我将其用作多项选择中的选择框。选择后,我希望它关闭并将值返回给我。这就是为什么我把它写下来,所以如果有人想知道同样的事情。
    • @Alper BTW:但是如果您需要在关闭 GUI 后使用选定的值,那么您还需要为全局变量赋值 - 以便在函数 check_list 之外访问它。在 Stackoverflow 上有类似的问题 - 如何在关闭 tkitner 后获取此值
    猜你喜欢
    • 2020-06-23
    • 2012-06-22
    • 2018-12-25
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2012-12-30
    • 2012-07-18
    • 2020-10-26
    相关资源
    最近更新 更多