У меня есть программа для игры в кости, использующая 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()
Я хочу, чтобы пользователь мог вводить число кубиков для броска и когда он нажимает «бросить кубик», все предыдущие метки с кубиками вудалены.Нет сообщения об ошибке, но оно не работает так, как я хочу.