私のコードは3つのリストボックスを持っています。私はそれぞれにListBoxSelectを添付しています。したがって、1つのリストボックスをクリックすると、他のリストボックスの同じ行が選択されます。Tkinterリストボックス<< ListBoxSelect >>が正しく動作しません
def __init__(self, master, lists):
Frame.__init__(self, master)
self.lists = []
for column,size in lists:
frame = Frame(self); frame.pack(side=LEFT, expand=YES, fill=BOTH)
Label(frame, text=column, borderwidth=1, relief=RAISED).pack(fill=X)
lb = Listbox(frame, width=size, borderwidth=1, selectborderwidth=1, relief=FLAT, export=FALSE)
lb.pack(expand=YES, fill=BOTH)
lb.bind('<<ListboxSelect>>',self.immediately)
lb.bind("<MouseWheel>", self._on_mousewheel)
self.lists.append(lb)
def immediately(self, e):
#Find the element
for elem in self.lists:
num = elem.curselection()
if len(num) == 1:
break
#Unselect every element
for elem in self.lists:
elem.selection_clear(0,elem.size())
#Select elements in the same row
for i in range(self.lists[0].size()):
for elem in self.lists:
elem.selection_set(num[0])
if __name__ == '__main__':
window = Tk()
window.title("Account Manager")
window.resizable(0,0)
window.geometry('+100+200')
accountList = MultiListbox(window, (('Website', 20), ('Account Name', 20), ('Password', 20)))
accountList.pack(expand=YES,fill=BOTH)
accountList.loadListFromFile()
window.mainloop()
最初のクリックで(どのリストボックスに関係なく)完全に機能します。 2回目のクリックでは、最初のlistBoxで動作し、他の2つでは何も起こりません。
これは他のリストボックスを2回目にクリックしても機能しないのはなぜですか?
ありがとうございました。
は 'numが[0]' 'immediately'であるものを印刷してみてください。私の推測は、それはあなたが期待するものではない。基本的なデバッグスキルを適用する:中間変数を出力して、仮定を検証します。 –