我正在尝试制作一个图形老虎机,目前正在努力使老虎机“旋转”。但是,这些按钮似乎跳过了所有其他更改,直接进入最终值。我试过利用时间睡觉,但这也不起作用。目前我正在循环第二个函数,但仍然不起作用。 如何确保按钮显示其在整个循环过程中使用的所有值
代码如下:
import tkinter as tk,random,time
root=tk.Tk()
results=["@","!","$","W","*","£","#","X","%"]
class spin:
def __init__(self,rowa,columna,text):
self.text=text
self=tk.Button(root, height=1,width=2,text=text)
self.grid(row=rowa,column=columna)
class spun:
def __init__(self,rowa,columna,text,com):
self.text=text
self=tk.Button(root, height=1,width=15,text=self.text,command=com)
self.grid(row=rowa,column=columna, columnspan=5)
def rotate():
for i in range(0,10):
part2()
time.sleep(0.00005)
def part2():
global slot1,slot2,slot3,slot4,slot5
slot1=spin(1,0,results[random.randint(0,len(results)-1)])
slot2=spin(1,1,results[random.randint(0,len(results)-1)])
slot3=spin(1,2,results[random.randint(0,len(results)-1)])
slot4=spin(1,3,results[random.randint(0,len(results)-1)])
slot5=spin(1,4,results[random.randint(0,len(results)-1)])
slot1=spin(1,0,"@")
slot2=spin(1,1,"£")
slot3=spin(1,2,"%")
slot4=spin(1,3,"$")
slot5=spin(1,4,"#")
spinner=spun(2,0,"Spin",rotate)
root.mainloop()
如注释中所述,关键是在for循环中使用
update_idletasks()
,以强制GUI在每次迭代时更新下面是关于如何构造代码的建议。您可以为老虎机创建一个类,而不是使用
global slot1, ...
。如注释所示,您不需要在rotate()
中的每次迭代中重新创建按钮,只需使用.configure(text=<new value>)
更改按钮的文本即可。最后,我使用random.choices()
直接在列表中绘制一个随机值,而不是使用random.randint()
绘制项目的索引注意:您可能想看看样式指南PEP 8,它有助于编写清晰的python代码(例如,他们建议将类名大写,在逗号后加一个空格,…)
相关问题 更多 >
编程相关推荐