首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Tkinker中创建大小随分数变化的圆(Python)

在Tkinker中创建大小随分数变化的圆(Python)
EN

Stack Overflow用户
提问于 2013-12-27 01:14:27
回答 1查看 566关注 0票数 4

我真的不太了解Tkinter,我甚至不确定这是否可能做到。但基本上,我想要的是用户在我编写的游戏中获得的分数的可视化表示。按照目前的工作方式,用户可以在“学习”和“聚会”之间进行选择,并根据他对tamaguchi的回答增加或减少大小。其想法是,Tkinter中的tamaguchi由一个圆圈表示,该圆圈与用户获得的分数相对应。我在想也许我可以把它放在root.mainloop()中?因此,每次循环时,它都会删除最后一个圆,并使用更新后的分数创建一个新圆。这是我到目前为止所写的:

代码语言:javascript
复制
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()

我不知道是否有一些内置的函数可以帮助我做到这一点,但我还没有能够找到自己的任何东西。当然,我的想法可能(也可能是)不是很好,所以如果有人对如何实现它有更好的想法,我完全愿意;我是一个相当大的菜鸟=]非常感谢你的帮助,我真的被困住了!

EN

回答 1

Stack Overflow用户

发布于 2014-01-04 07:17:57

有两种方法可以处理这个问题。

1)每次更改变量tamaguchin.size时更新圆的大小

2)使用计时器更新圆。Tkinker使用after函数来完成此操作。

我将提供第二种方法的示例:

代码语言:javascript
复制
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数字更改为所需的更新频率(以毫秒为单位)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20788516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档