2016-05-18 208 views
1

当我尝试单击左侧列表框时,它仅突出显示蓝色右侧。我如何让它突出显示两个列表框的?Python Tkinter列表框不突出显示

from Tkinter import * 
root=Tk() 
scrollbar = Scrollbar(root) 
scrollbar.pack(side = RIGHT, fill=Y) 


mylist = Listbox(root, yscrollcommand = scrollbar.set) 
for line in range(100): 
    mylist.insert(END, "This is line number " + str(line)) 
mylist.pack(side = RIGHT, fill = BOTH) 

mylist2 = Listbox(root, yscrollcommand = scrollbar.set) 
for line in range(100): 
    mylist2.insert(END, "This is line number " + str(line)) 
mylist2.pack(side = RIGHT, fill = BOTH) 

def scroll_bar(*args): 
    mylist.yview(*args) 
    mylist2.yview(*args) 
scrollbar.config(command = scroll_bar) 
def side_highlight(e): 
    select_number= mylist2.curselection() #gets where in listbox is selected 
    mylist.selection_set(select_number) 

mylist2.bind('<<ListboxSelect>>', side_highlight) 

root.mainloop() 

回答

1

您可以设置exportselection参数False当你定义列表框,以便它可以有选择多个项目。所以你的代码看起来像这样:

from Tkinter import * 
root=Tk() 
scrollbar = Scrollbar(root) 
scrollbar.pack(side = RIGHT, fill=Y) 


mylist = Listbox(root, yscrollcommand = scrollbar.set, exportselection = False) 
for line in range(100): 
    mylist.insert(END, "This is line number " + str(line)) 
mylist.pack(side = RIGHT, fill = BOTH) 

mylist2 = Listbox(root, yscrollcommand = scrollbar.set, exportselection = False) 
for line in range(100): 
    mylist2.insert(END, "This is line number " + str(line)) 
mylist2.pack(side = RIGHT, fill = BOTH) 

def scroll_bar(*args): 
    mylist.yview(*args) 
    mylist2.yview(*args) 
scrollbar.config(command = scroll_bar) 
def side_highlight(e): 
    select_number= mylist2.curselection() #gets where in listbox is selected 
    mylist.selection_clear(0, END)  # Needs to clear all previous elements 
    mylist.selection_set(select_number) 

mylist2.bind('<<ListboxSelect>>', side_highlight) 

root.mainloop()