Tkinterでコンボボックスのエントリを押したかボタンを押したかを判別したいです。
コンボボックスの仮想バインドには、<<ComboboxSelected>> くらいしかなく、おそらく自分で処理を作る必要があると思います。
以下のように作ってみました。
一応、期待動作はするのですが、この方法だとOSやテーマを変えると、cb_btn_widthを変える必要が出てきます。
その都度自力で求めるのも面倒です。
ほかにいい方法があったら教えてください。
ボタン幅さえ取得できれば、それをcb_btn_widthに入れれば出来そうな気はするのですが・・・。
Python
1from tkinter import ttk 2import tkinter as tk 3 4def pushed_combobox(e): 5 cb_width = e.widget.winfo_width() 6 cb_btn_width = 20 # この値は自力で導く 7 cb_entry_width = cb_width - cb_btn_width 8 9 if cb_entry_width > e.x: 10 print("Entry") 11 else: 12 print("Button") 13 14win = tk.Tk() 15 16# テーマを変えるとボタン幅も変わってしまうため、cb_btn_width を変える必要あり 17#ttk.Style().theme_use("clam") 18 19cb = ttk.Combobox(win) 20# width やフォントサイズが変わってもボタン幅は変わらないため、cb_btn_width を変える必要なし 21#cb.configure(width = 30) 22#cb.configure(font = ("", 30)) 23cb.grid() 24 25cb.bind("<Button-1>", pushed_combobox) 26 27win.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/03 01:40
2021/07/03 02:12