2017-08-17 12 views
0

私はボタンを押した後に喜んでボタンを削除するコードを持っています。あるいはコードを実行しますが、両方を行うことはできません。とにかくこれをすることがあるかどうか疑問に思っていた。python tkinterでは、ボタンを消して、定義を実行するようにしたい

import tkinter 
window = tkinter.Tk() 

def start(): 
gamestart = True 
#this runs the code at the end 

#btn = tkinter.Button(window, text = 'Prepare to fight' , command = start) 
#this would create a button that runs the code(but not perfectly) 
btn = tkinter.Button(window, text="Prepare to Fight", command=lambda: btn.pack_forget()) 
#this creates a button that dissapears 
btn.pack() 
#creates button 
window.mainloop() 
if gamestart == True: 
    lbl = tkinter.Label(window, text = 'WELCOME TO PYTHON COMBAT') 
    #beggining of game 
+0

「両方を行う」という意味はどういう意味ですか?ボタンを削除して他のコードを実行する場合は、関数内のすべてのコードをラップし、ボタンが押されたときにそのコードを呼び出します。 –

+0

これを関数に入れようとしましたが、うまくいきませんでした – notme21

答えて

1

あなたがしたいすべてがdefinitionを実行してもbuttonを削除するためにcommandを使っているなら、あなたは単にbuttonを削除しても、あなたはそれがする必要があるスニペット何でも実行commandを呼び出す必要があります。

from tkinter import * 

root = Tk() 

def command(button): 
    button.pack_forget() 
    print("Command executed and button removed") 

button = Button(root, text="Ok", command=lambda:command(button)) 

button.pack() 

root.mainloop() 

以上になる唯一の「隠す」button意味:

これは単純に以下のように、あなたはdefinitionbuttonを含む変数を渡すことができるようにlambdaの適切な使用を必要とします後でもう一度packことができ、以下の完全buttonを削除します:

from tkinter import * 

root = Tk() 

def command(button): 
    button.destroy() 
    print("Command executed and button removed") 

button = Button(root, text="Ok", command=lambda:command(button)) 

button.pack() 

root.mainloop() 
+0

本当に役に立ちました。 – notme21

+0

これであなたの質問に答えることができれば、他のユーザーが将来見ることができるように答えることができますか? –

+0

これはボタンを削除しないので、表示されないことに注意してください。 –

関連する問題