如何在 tkinter.Listbox 中“修复”选定的项目?

里奇罗

这是我的代码的摘录:

import tkinter as tk

def evaluate(event):
    print(list_box.curselection())
    
root = tk.Tk()
var = tk.StringVar()
var.set(0)

entry = tk.Entry(root, textvariable = var)
entry.place(x = 150, y = 0, width = 20)
entry.bind("<Return>", evaluate)


list_box = tk.Listbox(root, selectmode = 'single')
list_box.place(x = 0, y = 0)
lst = [1, 2, 3]

for elem in lst:
    list_box.insert('end', elem)

list_box.selection_set(first = 0)
list_box.bind("<<ListboxSelect>>", evaluate)

root.mainloop()

问题是我想以某种方式“修复”tkinter.Listbox 中最后一个选定的值。我的意思是,如果我们在窗口中为条目输入一些内容,那么在某些情况下(可能取决于您单击输入框的方式),在列表中选择的值将丢失。例如,是否可以保存上次选择的值?

我是 Python 的新手,特别是 tkinter 包,所以任何帮助将不胜感激。

阿特拉斯435

问题是,一旦您选择了条目的输入等其他内容,您的列表框就会丢失显示的选择。我删除了双击的默认绑定,但是如果您仍然想使用它来编写输入,我无法删除单击(B1-Motion 也可以)。至少我不知道如何。我建议将条目用作显示,反之亦然。

import tkinter as tk

def evaluate(event):
  print(list_box.curselection())


root = tk.Tk()
var = tk.StringVar()
var.set(0)

entry = tk.Entry(root, textvariable = var)
entry.place(x = 150, y = 0, width = 20)
entry.bind("<Return>", evaluate)
entry.bind('<Double-Button-1>', lambda e: "break")


list_box = tk.Listbox(root, selectmode = 'single')
list_box.place(x = 0, y = 0)
lst = [1, 2, 3]

for elem in lst:
    list_box.insert('end', elem)

list_box.selection_set(first = 0)
list_box.bind("<<ListboxSelect>>", evaluate)

root.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章