加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

根据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数字更改为所需的更新频率(以毫秒为单位).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读