listboxから複数の選択肢を選択して、新しいlistに入れるGUIを作成したいです。
https://suzutaka-programming.com/tkinter-listbox/
上記のサイトを参考に作成しましたが、listboxから同時に複数の選択を行うことができません。
selectmode="extended" を指定しましたが単独でしか選択できません。
ご教授いただきたくお願いいたします。
kudamono=["りんご","ばなな","ぶどう","すいか"] from tkinter import * import tkinter.ttk as ttk new_list=[] class ListboxSampleApp(ttk.Frame): def __init__(self, app): super().__init__(app) self.pack() self.colmnsname = kudamono cnames = StringVar(value=self.colmnsname) snames = StringVar() self.listbox = Listbox(app, listvariable=cnames, height=12) self.listbox.pack() button = ttk.Button(app,text = "食べたい" ,command=self.selectItem) button.pack() self.selectbox = Listbox(app, listvariable=snames,height=5,selectmode="extended") self.selectbox.pack() button2 = ttk.Button(app,text = "OK", command = self.close_window) button2.pack() def close_window(self): app.destroy() app.quit() def selectItem(self): # 選択されている数値インデックスを含むリストを取得 itemIdxList = self.listbox.curselection() print(itemIdxList) aa=itemIdxList[0] new_list.append(aa) if len(itemIdxList) == 1: name = self.colmnsname[itemIdxList[0]] # 末尾に選択された要素を追加する self.selectbox.insert("end",name) if __name__ == '__main__': #Tkインスタンスを作成し、app変数に格納する app = tk.Toplevel() #縦幅400横幅300に画面サイズを変更します。 app.geometry("300x500+100+100") #タイトルを指定 app.title("選択") # #フレームを作成する frame = ListboxSampleApp(app) # 格納したTkインスタンスのmainloopで画面を起こす app.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/26 12:02