是否可以在执行期间更改 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)
你的方法不行的原因是你说的,你在重新定义变量。
让我们假设一个简单的 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)
你的方法不行的原因是你说的,你在重新定义变量。