messageboxを表示したいのですが、フォントの大きさなどを変えられないということなどから、自作することにしました。
とりあえず作ってみたのが下のようになるのですが、
標準のmessageboxだとOK・キャンセル、はい・いいえなどを選ぶと
戻り値としてTrue・False、yes・noなどを得ることができますが、
下のように作ったときに戻り値をうまく設定できません。
実現することは可能でしょうか?
Python
1import tkinter as tk 2import tkinter.ttk as ttk 3 4def my_ask(e): 5 6 def ok_pushed(e): 7 sub.grab_release() 8 sub.destroy() 9 print("ok") 10 11 def cancel_pushed(e): 12 cancel() 13 14 def cancel(): 15 sub.grab_release() 16 sub.destroy() 17 print("cancel") 18 19 sub = tk.Toplevel() 20 sub.attributes("-topmost", True) 21 sub.resizable(0, 0) 22 sub.transient(win) 23 sub.grab_set() 24 25 sub.grid_rowconfigure(0, weight=1) 26 sub.grid_columnconfigure(0, weight=1) 27 28 f_msg = tk.Frame(sub) 29 f_msg.grid(row=0, column=0, sticky="nsew") 30 f_btn = tk.Frame(sub) 31 f_btn.grid(row=1, column=0, sticky="nsew") 32 33 f_msg.grid_rowconfigure(0, weight=1) 34 f_msg.grid_columnconfigure(0, weight=1) 35 msg = "Are you okay?" 36 l = tk.Label(f_msg, text=msg, font=("",15)) 37 l.grid(row=0, column=0, sticky="nsew", pady=20) 38 39 f_btn.grid_rowconfigure(0, weight=1) 40 f_btn.grid_columnconfigure((0,1), weight=1) 41 s = ttk.Style() 42 s.configure("TButton", font=("",15)) # TButtonは print(ttk.Button().winfo_class()) で確認 43 b_ok = ttk.Button(f_btn, text="ok", width=10, style="TButton") 44 b_ok.grid(row=0, column=0, sticky="nsew", padx=10, pady=20) 45 b_cancel = ttk.Button(f_btn, text="cancel", width=10, style="TButton") 46 b_cancel.grid(row=0, column=1, sticky="nsew", padx=10, pady=20) 47 48 b_ok.bind("<ButtonRelease>", ok_pushed) 49 b_cancel.bind("<ButtonRelease>", cancel_pushed) 50 51 sub.protocol("WM_DELETE_WINDOW", cancel) 52 53win = tk.Tk() 54 55b = tk.Button(win, text="toplevel()", width=10) 56b.grid() 57 58b.bind("<ButtonRelease>", my_ask) 59 60win.mainloop()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。