【Python GUI tkinterサンプル】tkinter ttk.Buttonのイベント(bind)実行後、ボタンが押下状態になるのを回避する

<tkinterトップページに戻る>

症状

まずボタンにファイルダイアログやメッセージボックスを開くイベントをbindし、

そのボタンを押下すると処理が終わったにもかかわらずボタンが押されたままになる。

理想と現実

ButtonBind

 

 

回避方法

コールバック関数の最後に

return “break”することで回避できる。

 

ソースコード

from tkinter import *
import tkinter.ttk as ttk
import tkinter.messagebox as messagebox

class ButtonSampleBind(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.create_widgets()
        self.pack()

    def create_widgets(self):
        button = ttk.Button(self,text = "button")
        button.bind("<Button-1>",self.showinfo)
        button.pack()
    def showinfo(self,event):
        messagebox.showinfo("info","buttonが押されました")
        return "break"


if __name__ == '__main__':
    master = Tk()
    master.title("ButtonSample-Bind")
    master.geometry("300x50")
    ButtonSampleBind(master)
    master.mainloop()

あわせて読みたい