根据Tkinker(Python)中的得分创建一个大小变化的圆圈
发布时间:2020-12-20 13:39:10 所属栏目:Python 来源:网络整理
导读:我真的不太了解Tkinter,我甚至不确定这是可行的.但基本上我想要用户在我编程的游戏中得到的分数的直观表示.由于它目前正在工作,用户可以在“学习”和“派对”之间进行选择,并且取决于他如何回答tamaguchi的大小增加或减少.这个想法是tamaguchi在Tkinter中用
我真的不太了解Tkinter,我甚至不确定这是可行的.但基本上我想要用户在我编程的游戏中得到的分数的直观表示.由于它目前正在工作,用户可以在“学习”和“派对”之间进行选择,并且取决于他如何回答tamaguchi的大小增加或减少.这个想法是tamaguchi在Tkinter中用圆圈表示,该圆圈与用户获得的分数相对应.我想也许我可以在root.mainloop()中有这个?因此,每次循环时,它都会删除最后一个圆圈,并创建一个具有更新分数的新圆圈.这是我到目前为止所写的:
class Application(Frame): def __init__(self,master): super(Application,self).__init__(master) self.grid() self.create_widgets() self.circle() def circle(self): circle1.destroy() r = int(tamaguchin.size) self.circle1 = circle(r^2*3.14) self.circle1.grid() def create_widgets(self): Label(self,text = "V?lkommen till spelet!" ).grid(row = 0,column = 6,sticky = W) self.btn1 = Button(self,text = "study",command = lambda:self.update_text('plugga')) self.btn1.grid(row=1,column=0) self.btn2 = Button(self,text = "party",command = lambda:self.update_text('festa')) self.btn2.grid(row=2,column=0) self.btn3 = Button(self,text = "exit",command = self.exit) self.btn5.grid() def update_text(self,value): message = "Your choice was",value,"which brings your last 3 choices to:" print(message) lista.append(value) lista.remove(lista[0]) print(lista[0],'-',lista[1],lista[2]) if lista in PositivLista: tamaguchin.increasesize() elif lista in NegativLista: tamaguchin.decreasesize() elif lista in HalveringsLista: tamaguchin.halfsize() else: tamaguchin.samesize() return lista def exit(self): print('You have chosen to exit the game') root.destroy() root = Tk() root.title("Tamaguchi-game") root.geometry("500x500") app = Application(root) app.grid() root.mainloop() 我不知道是否有某种内置功能可以帮助我解决这个问题,但我自己还没有找到任何东西.当然,我的想法可能(并且很可能)不是很好,所以如果有人对如何接近它有更好的想法,我会全力以赴;我是一个非常大的菜鸟=]非常感谢任何帮助,我真的很喜欢这个! 解决方法
有两种方法可以解决此问题.
1)在变量tamaguchin.size的每次更改时更新圆的大小 2)使用计时器更新圆圈. Tkinker使用after函数来执行此操作. 我将提供第二种方法的示例: def circle(self): circle1.destroy() r = int(tamaguchin.size) self.circle1 = circle(r^2*3.14) self.circle1.grid() self.root.after(1000,self.circle) 这将每秒更新一次圆圈.您可以将1000数字更改为所需的更新频率(以毫秒为单位). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |