Как убрать ярлык с ткинтера по нажатию кнопки - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть программа для игры в кости, использующая Python и tkinter.Пользователь вводит количество бросаемых костей и нажимает кнопку «бросить кость».Изображение кости вставлено в этикетку.У меня есть 2 ярлыка: label1 и labe2.У Labe1 есть изображение кости, которое при нажатии кнопки идет так, как я хочу, не вставляя изображение - однако метка есть, но невидимая, поскольку цвет фона соответствует холсту.Метка 2 содержит кости из бросков, сделанных после каждого нажатия кнопки.Я попытался вставить функцию удаления метки: 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()

Я хочу, чтобы пользователь мог вводить число кубиков для броска и когда он нажимает «бросить кубик», все предыдущие метки с кубиками вудалены.Нет сообщения об ошибке, но оно не работает так, как я хочу.

...