Python 如何在列表框上绑定“全选”事件?

Python 如何在列表框上绑定“全选”事件?,python,python-2.7,listbox,tkinter,bind,Python,Python 2.7,Listbox,Tkinter,Bind,我有两个列表框。当选择一个列表框时,它会使用函数的输出触发end进行更新。当我使用事件单独单击每个选项时,这很好,但是我现在不知道如何使用“全选”按钮使其工作。全选按钮可以突出显示项目,但我无法让它更新第二个列表 评论来自一个网站 您可以重用onSelect方法中的代码。您只需将event.widget替换为self.lb: 当然,这有点重复。两种方法都有相同的代码。最好采用单独的方法将其考虑在内: def get_selected_files(self): selection=self

我有两个列表框。当选择一个列表框时,它会使用函数的输出触发end进行更新。当我使用事件单独单击每个选项时,这很好,但是我现在不知道如何使用“全选”按钮使其工作。全选按钮可以突出显示项目,但我无法让它更新第二个列表

评论来自一个网站


您可以重用onSelect方法中的代码。您只需将event.widget替换为self.lb:

当然,这有点重复。两种方法都有相同的代码。最好采用单独的方法将其考虑在内:

def get_selected_files(self):
    selection=self.lb.curselection()
    files_avalibe = []
    if selection:
        for drive_i in selection:
            selected_drive = rdrive[drive_i]
            files_avalibe += sel_files[selected_drive]
    return files_avalibe
然后调用onSelect中的get_selected_files和select_all_Drive方法:

选择所有驱动器功能可以触发事件:

def select_all_drives(self):
    self.lb.select_set(0, END)
    self.lb.event_generate("<<ListboxSelect>>")

您可以将更新文件列表框的代码打包到一个单独的方法中,当从另一个列表框选择驱动器或按下按钮时,将调用该方法。非常好!很好!
def get_selected_files(self):
    selection=self.lb.curselection()
    files_avalibe = []
    if selection:
        for drive_i in selection:
            selected_drive = rdrive[drive_i]
            files_avalibe += sel_files[selected_drive]
    return files_avalibe
def onSelect(self, event):
    self.update_file_list(self.get_selected_files())

...

def select_all_drives(self):
    self.lb.select_set(0, END)
    self.update_file_list(self.get_selected_files())
def select_all_drives(self):
    self.lb.select_set(0, END)
    self.lb.event_generate("<<ListboxSelect>>")