说我有一段这样的代码:
from tkinter import *
master=Tk()
ListBox1 = Listbox(master, selectmode=MULTIPLE)
for Count in range(0, 5):
ListBox1.insert(END, Count)
ListBox1.pack()
我想知道是否可以将所选对象的数量限制为3或4之类。快速谷歌搜索和listbox
的配置选项的读取没有产生任何结果,坦率地说我'我们很难知道如何才能取得这些成果。
答案 0 :(得分:2)
是的,这是可能的。您可以完全控制列表框中选择的内容。但是,没有任何内置支持这一点,因此您必须编写跟踪选择的所有代码,并禁止根据某些条件更改选择。这可能会造成非常混乱的用户体验,因为用户无法知道这个看起来像标准的列表框有非标准行为。
答案 1 :(得分:0)
所以我今天再次回顾了这个问题,最后为它写了一个解决方案,差不多三年了:
from tkinter import *
class App:
def __init__(self, root):
self.root = root
self.listbox = Listbox(self.root, selectmode=MULTIPLE)
self.listbox.pack()
self.listbox.bind("<<ListboxSelect>>", self.callback)
for i in range(10):
self.listbox.insert(END, i)
self.selection = self.listbox.curselection()
def callback(self, a):
if len(self.listbox.curselection()) > 3:
for i in self.listbox.curselection():
if i not in self.selection:
self.listbox.selection_clear(i)
self.selection = self.listbox.curselection()
root = Tk()
App(root)
root.mainloop()
这会在每次检查后创建一个数据实例,然后检查前一个实例以查看是否存在任何差异,然后删除这些差异。