私は2つのリストボックスを持っています。最初のリストボックスの項目をクリックすると、2番目のリストボックスに情報が挿入されます。別のリストボックスから選択してリストボックスから選択してください
挿入したアイテムの1つをクリックすると、エラーが発生します。
リストボックスのように定義される:list_1の項目をクリックはでアイテムを挿入
def CurSelect(evt):
list_2.delete(0,END)
selected = list_1.get(list_1.curselection())
for i in range(2):
list_2.insert(END,i)
:
list_1.bind('<<ListboxSelect>>',CurSelect)
を指す:選択された項目を取得する
list_1 = Listbox(root,selectmode=SINGLE)
list_2 = Listbox(root,selectmode=SINGLE)
list_2。
私はList_2の項目を選択した場合、これは表示されます:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\XXX\Anaconda3\lib\tkinter\__init__.py", line 1699, in __call
__
return self.func(*args)
File "unbenannt.py", line 28, in CurSelect
selected = liste.get(liste.curselection())
File "C:\Users\XXX\Anaconda3\lib\tkinter\__init__.py", line 2792, in get
return self.tk.call(self._w, 'get', first)
_tkinter.TclError: bad listbox index "": must be active, anchor, end, @x,y, or a
number
私は>>最初のリストボックスで選択するときに、この種の問題を持っていましたが、< < ListboxSelectでそれを解決しました。
2番目のリストボックスのアイテムを以前にクリックしても機能しましたが、それ以降は何も変更されませんでした。
完全なコード例:
from tkinter import *
class Code():
def __init__(self):
Code.Window(self)
def Window(self):
root = Tk()
scrollbar = Scrollbar(root)
scrollbar.grid(row=4,rowspan=3,column=1,sticky=N+S+W)
liste = Listbox(root,selectmode=SINGLE,width=12,yscrollcommand=scrollbar.set)
liste.grid(row=4,rowspan=3,column=0)
for j in range(2):
liste.insert(END,j+5)
scrollbar.config(command=liste.yview)
scrollbar_2 = Scrollbar(root)
scrollbar_2.grid(row=4,rowspan=3,column=3,sticky=N+S+W)
eintrag = Listbox(root,selectmode=SINGLE,yscrollcommand=scrollbar_2.set)
eintrag.grid(row=4,rowspan=3,column=2,sticky=W)
def CurSelect(evt):
eintrag.delete(0,END)
selected = liste.get(liste.curselection())
for i in range(2):
eintrag.insert(END,str(i)+str(selected))
liste.bind('<<ListboxSelect>>',CurSelect)
root.mainloop()
Code()
この例では、何が便利なことはありませんが、問題は、とにかく表示されます。
喜ば[MCVE]完全を作成します。
if
とネスティング全体のイベントハンドラは、問題が解決されます。 –okすぐに – Wolfmercury
あなたのコードはうまく動作するようです。しかし、このコードはあなたが言うエラーを生成しないことは明らかです。 _actual_コードと_actual_エラーを投稿してください。 –