是否可以在执行期间更改 tkinter ListBox 的选择模式?

Is it possible to change a tkinter ListBox's selectmode during execution?

让我们假设一个简单的 tkinter 表单最初在 selectmode=EXTENDED 中使用 Listbox 小部件定义。我想编写一个按钮,它将向表单添加高级选项,从而强制用户 select 列表中的单个项目。这转化为 selectmode=SINGLE.

我的代码不工作。也许我根本无法重新定义 Listbox,我应该以其他方式访问参数 selectmode

class DefineMultiSelectForm(Frame):
    def __init__(self, master, listtodisplay=[]):
        Frame.__init__(self, master=master)
        self.listtodisplay=listtodisplay
        self.create_widgets()
        self.pack(fill=BOTH, expand=1)

    def create_widgets(self):
        self.listbox = Listbox(self,selectmode=EXTENDED, width=50)
        self.listbox.grid(row=0, column=0, columnspan=4, sticky=W+E+N+S)
        self.advanced_butt = Button(self, text="Advanced Editing", command=self.advanced)
        self.advanced_butt.grid (row=7, column=2, sticky=W+E)
        self.simplifd_butt = Button(self, text="Simple Editing", command=self.simple)
        self.simplifd_butt.grid (row=7, column=1, sticky=W+E)

    def advanced(self):
        self.listbox = Listbox(self,selectmode=SINGLE, width=50)

    def simple(self):
        self.listbox = Listbox(self,selectmode=EXTENDED, width=50)

非常感谢!

我不确定 selectmode 态度,但对于大多数 tkinter 属性,您可以这样更改它:

self.listbox['selectmode'] = SINGLE
# or you can do it this way
self.listbox.config(selectmode = SINGLE)

你的方法不行的原因是你说的,你在重新定义变量。