簡體   English   中英

點擊后銷毀Tkinter按鈕

[英]Destroy the Tkinter button after it is clicked

我正在嘗試在 Tkinter 上玩機會游戲。我試圖讓按鈕在單擊后消失。 這應該適用於所有按鈕 - 單擊按鈕后,用戶將不再可見。 這些按鈕位於我代碼的后半部分,來自Start() function。

from tkinter import *
from tkinter import messagebox
import random

point = 0

def showerror():
    messagebox.showerror("Loser","Next time :)")
    messagebox.showinfo("Your point", "Point: " + str(point))

def addpoint():
    global point
    point +=  31

def deleteButton():
    pass

def test():
    r = random.randint(0,7)
    if r > 4:
        showerror()
    elif r <= 4:
        addpoint()

tk = Tk()
tk.title("Are u Lucky")
tk.geometry("400x300")

def Start():
    P1 = Label(tk, text="Choose")
    P1.place(x=157,y=10)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=10 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=50 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=90 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=130 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=170 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=210 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=250 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=290 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=330 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=370 ,y=30)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=10 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=50 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=90 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=130 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=170 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=210 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=250 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=290 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=330 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=370 ,y=60)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=10 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=50 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=90 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=130 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=170 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=210 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=250 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=290 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=330 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=370 ,y=90)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=10 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=50 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=90 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=130 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=170 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=210 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=250 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=290 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=330 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=370 ,y=120)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=10 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=50 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=90 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=130 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=170 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=210 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=250 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=290 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=330 ,y=150)
    P2 = Button(tk, text="  X   ",command=test)
    P2.place(x=370 ,y=150)

tk.mainloop()

這並不完美,但我對您的代碼做了一些改進。 一些技巧:

  • 使用循環,幾乎總是可以為冗余工作創建一個循環,即。 復制和粘貼 50x 按鈕
  • 如果您的代碼事件有效,我更改了初始化window 的方式
  • 另外,“P1”和“p2”是不好的命名約定,但我也這樣做,所以 idk

回答您的問題:您可以對任何 object 使用 .destroy() 或 (.forget_pack() and.forget_grid() )

代碼:

 import random from tkinter import * from tkinter import messagebox point = 0 class Main(): def showerror(): messagebox.showerror("Loser","Next time:)") messagebox.showinfo("Your point", "Point: " + str(point)) def addpoint(): global point point += 31 def deleteButton(btn): btn.destroy() def test(btn): r = random.randint(0,7) if r > 4: Main.showerror() elif r <= 4: Main.addpoint() Main.deleteButton(btn) def __init__(root, master): root.master = master window = master window.title("Are u Lucky") window.geometry("400x300") P1 = Label(window, text="Choose") for x in range(1, 20): for y in range(1, 20): button = Button(window, text=" X ",) button.place(x=(10+x*40),y=(30+y*30)) button.configure(command=lambda btn=button: Main.test(btn)) root = Tk() window = Main(root) root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM