実現したいこと・仕様
独学でtkinterのGUIを学んでおります。
ttk.Combobox
の仕様として、ウィジェット上でマウススクロールをすると、以下のような動作をします。
①リストを表示していないとき
スクロール距離に応じて、Combobox
に設定されたリスト内の値を移動(?)し、Entry
部に表示する
②リストを表示しているとき
リストがスクロールされ、Entry
部の表示は変わらない
********************************
変更したい内容
◆リストを表示していないとき
ウィジェット上でスクロールしても、Combobox内の値は変更しない
********************************
解決法をご教示願いたいです。
該当のソースコード
Python
1import tkinter as tk 2import tkinter.ttk as ttk 3 4app = tk.Tk() 5 6lst_cb = list(range(20)) 7cb = ttk.Combobox(app, values=lst_cb) 8cb.pack() 9 10app.mainloop()
試したこと
マウススクロールをbindして、無意味な処理(現在の値を取得して、代入)をさせてみましたが、効果はありませんでした。
マウススクロール関数のあとに、勝手に値が書き換えられてしまいます。
Python
1def MouseScroll(event): 2 s = event.widget.get() 3 event.widget.set(s)
https://projetos.prime.cv/gds/python/env_gds/tcl/tk8.6/ttk/combobox.tcl
こちらに、tcl言語でCombobox
ウィジェットにマウススクロールをbindしている記載があります。
これを無効化できればと思うのですが、書き方がわかりません。
また、リストの表示有無でマウススクロールbindの有無を切り替えられるかも不明です。
試したこと2
return "break"
をマウススクロール関数の最後に入れましたが、マウススクロールに伴ってEntry
部の表示は変更されてしまいました。
Python
1def onScroll(event): 2 return "break" 3 4cb.bind_all("<MouseWheel>", onScroll)
補足情報(FW/ツールのバージョンなど)
Windows11
Python 3.9.7
tk 8.6.11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/24 10:50
2022/05/24 12:10
2022/05/25 04:04 編集
2022/05/25 13:14 編集
2022/05/25 13:33 編集
2022/05/26 13:30