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