前回の質問の仕方に不備が有りましたので、書き直しました。
クラスの継承機能については余り理解できておりませんが、カメラのEV値計算簡単アプリを作成中です。
listboxを二つ作りました。 listbox間を行き来したいのですが、listbox1で数値確定後、listbox2(或いはその逆)に移ると、動作は見たところ正しいのですがエラー表示が出ます。
宜しくお願い致します。
発生している問題・エラーメッセージ
下記のエラーが表示されます Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\tak11\AppData\Local\Programs\Python\Python37\lib\tkinter\init.py", line 1705, in call return self.func(*args) File "C:\Users\tak11\デスクトップ\ISO_F_T-リストボックス検討1.py", line 47, in show_item self.label_2["text"] = self.listbox_2.get(item_index_2) File "C:\Users\tak11\AppData\Local\Programs\Python\Python37\lib\tkinter\init.py", line 2798, 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
該当のソースコード
#ISO_F_T-リストボックス検討1.py import tkinter as tk class TestListbox_1(tk.LabelFrame): def __init__(self, master=None): super().__init__(master, text="ISO") #Listbox self.listbox_1 = tk.Listbox(self, width=8, selectmode="extended") self.listbox_1.bind("<<ListboxSelect>>", self.show_item) li = ["50", "100", "200", "400", "800", "1600", "3200", "6400", "12800", "25600"] for item in li: self.listbox_1.insert(tk.END, item) self.listbox_1.pack() #表示用ラベル self.label_1 = tk.Label(self, text="ISO", bg="lightblue") self.label_1.pack() def show_item(self, event): #リストクリック時に実行するメソッド item_index_1 = self.listbox_1.curselection() self.label_1["text"] = self.listbox_1.get(item_index_1) class TestListbox_2(tk.LabelFrame): def __init__(self, master=None): super().__init__(master, text="絞り") #Listbox self.listbox_2 = tk.Listbox(self, width=8, selectmode="extended") self.listbox_2.bind("<<ListboxSelect>>", self.show_item) li = ["1.4", "2", "2.8", "4", "5.6", "8", "11", "16", "22", "32"] for item in li: self.listbox_2.insert(tk.END, item) self.listbox_2.pack() #表示用ラベル self.label_2 = tk.Label(self, text="絞り", bg="lightgreen") self.label_2.pack() def show_item(self, event): #リストクリック時に実行するメソッド item_index_2 = self.listbox_2.curselection() self.label_2["text"] = self.listbox_2.get(item_index_2) if __name__ == "__main__": root = tk.Tk() root.title("kumasanのEV計算機") root.geometry("300x400") iso = TestListbox_1(master=root) iso.place(x=20, y=20) aperture = TestListbox_2(master=root) aperture.place(x=120, y=20) root.mainloop()
試したこと
上記のcodeで動作はしていますが、エラーが出るということは何処かに間違いがあるのだと思います。
補足情報(FW/ツールのバージョンなど)
W10 64bit
Python3.7
ここにより詳細な情報を記載してください。
質問を編集する機能があるので、次からは質問の編集はそれで対応してください。
回答3件
あなたの回答
tips
プレビュー