1

現在18個のボタンがあるTkinterウィンドウがあり、それらはすべて同じコードを持っています。

    Button2=Button(master,text='click me',command=lambda:callback())
    Button2.grid(row=1,column=2)

このコードを実行すると、プロシージャが実行されます

callback 

しかし、私はそれがプロシージャを実行してから消えることを望んでいます。私が試してみました

def hide_me(event):
event.widget.grid_forget()

Button2=Button(master,text='click me',command=lambda:callback())
Button2.bind('<Button-1>',hide_me) 
Button2.grid(row=1,column=2)

しかし、ボタンを押すと、コールバックを実行せずにボタンが消えます。

def callback(Buttons):

   C = Characters.pop(0)
   Buttons.bind('<Button-1>',hide_me())
   return C()


Button2=Button(master,text='click me',command=lambda:callback(Button2))
Button2.bind('<Button-1>',hide_me) 
Button2.grid(row=1,column=2)

コールバックを実行しますが、ボタンは消えません。誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

2

すでにキーワードargbindを使用している場合は、呼び出さないでください。command

ラップcallback()grid_forget()て1つのメソッドにまとめるだけです。

def callback_and_hide(button):
    callback()
    button.grid_forget()

Button2 = Button(master,text='click me',command=lambda: callback_and_hide(Button2))
于 2012-10-24T18:53:21.347 に答える