如何在单击按钮时从Tkinter删除标签

时间:2019-09-28 14:04:46

标签: tkinter label

我有一个使用Python和tkinter的骰子滚动程序。 用户输入要掷骰子的数量,然后单击“掷骰子”按钮。将骰子图像插入标签。 我有2个标签:label1和labe2。 Labe1具有一个骰子图像,单击该按钮时不放入任何图像即可达到我想要的颜色-但是标签在那里,但是由于背景颜色与画布匹配而看不见。在每次单击按钮后,Label2都会保留骰子中的骰子。我尝试放入删除标签功能:delLabel清除标签2,但不起作用。标签只是不断增加!

我尝试了许多不同的版本,但没有任何效果! 我认为使用框架可能会更好?但是,有可能我尝试的方式吗?感谢您的帮助/建议。我也在尝试不使用类来做到这一点。

from random import randint
from tkinter import *

root = Tk()
root.geometry("600x700")
root.title("Dice roller")
root.iconbitmap("images/dice_green.ico")
root.config(bg="Lime Green")
num = 0

image = []
img=PhotoImage(file="images/die1.png")
img = img.subsample(5, 5)
image.append(img)
img= PhotoImage(file="images/die2.png")
img = img.subsample(5, 5)
image.append(img)
img= PhotoImage(file="images/die3.png")
img = img.subsample(5, 5)
image.append(img)
img= PhotoImage(file="images/die4.png")
img = img.subsample(5, 5)
image.append(img)
img= PhotoImage(file="images/die5.png")
img = img.subsample(5, 5)
image.append(img)
img= PhotoImage(file="images/die6.png")
img = img.subsample(5, 5)
image.append(img)

def roll():
    # Generates a random number for a random index
    return randint(0, 5)

def buttonclick():
    #Destroy the original dice image
    label1.config(image='')
    label2.config(image='')
    delLabel()
    global num
    for x in range(0, userinput()):
        num = roll()
        dieLabels()
        print ("dice = ", num + 1)

def userinput():
    numberofDie = int(dienum.get("1.0", END))
    return numberofDie

def dieLabels():
    global num
    label2 = Label(root, image=img, bg="Blue")
    label2.config(image=image[num])
    label2.pack(side=LEFT,padx=10, pady=10)

def delLabel():
    label2.config(image='')


label1 = Label(root, image=img, bg="Lime Green")
label1.pack(pady=10)

# Label so the user knows this is where they input their desired amount of dice to roll
label_dice = Label(root, text="Number of Dice:").pack()
# Text box that accepts user input
dienum = Text(root, width=5, height=1, bg="yellow")
dienum.pack(pady=10)

button = Button(root, text="Roll the dice", command=buttonclick)
button.configure(width=10, height=3)
button.configure(cursor="hand2", bd=2, fg="White", highlightbackground="Dark Green")#Foreground & background will not change on a MAC!
button.pack(pady=10)

label2 = Label(root, image=img, bg="Blue")
label2.pack(side=LEFT,padx=10, pady=10)

root.mainloop()

我希望用户能够输入要掷骰子的数量,并且当他们单击“掷骰子”时,所有以前带有骰子的标签都将被删除。 没有错误信息,但它不能按我的要求工作。

0 个答案:

没有答案