当前位置: 首页 > 知识库问答 >
问题:

如何让我的函数在Python中每秒运行?[重复]

郑景胜
2023-03-14
from Tkinter import*
from tkMessageBox import*
import random
import time

n = 1
a = 1

class GameFrame(Frame):

    def __init__(self):
        global a
        global n
        Frame.__init__(self)
        self.master.title("Be a Billionaire")
        self.master.geometry("1200x700")
        self.master.resizable(0,0)
        self.grid()

        self._mission = Label(self, text = "Your Mission is to Earn 1,000,000,000$" ,font = ("Arial", 30, "bold"))
        self._mission.grid()

        counter1 = IntVar()
        counter1.set(0)

        self._currentmoney = Label(self, text = "Your Current Money:" ,font = ("Arial", 30, "bold"))
        self._currentmoney.grid()

        self._currentmoney = Label(self, textvariable = counter1 ,font = ("Arial", 30, "bold"))
        self._currentmoney.grid()

        ###########################################################Click###########################################################
        self._moneyearn = Button(self, text = "Click Me to Earn Money", font = ("Arial", 30, "bold"), command = lambda: increasemoney(a))
        self._moneyearn.grid()

        self._clickupgrade1 = Button(self, text = "Click Me to Upgrade Click", font = ("Arial", 15, "bold"), command = lambda: upgradeclick())
        self._clickupgrade1.grid()

        self._costlabel1 = Label(self, text = "Cost:", font = ("Arial", 15, "bold"))
        self._costlabel1.grid()

        counter2 = IntVar()
        counter2.set(2)
        self._neededmoney1 = Label(self, textvariable = counter2, font = ("Arial", 15, "bold"))
        self._neededmoney1.grid()

        def increasemoney(x):
            counter1.set(counter1.get() + x)

        def upgradeclick():
            global a
            global n
            if counter1.get() >= n*(n+1)*(n+2):
                a += 5*n
                counter1.set(counter1.get() - n*(n+1)*(n+3))
                counter2.set((n+1)*(n+2)*(n+3))
                n += 1               
            else:
                showwarning(message = "You Don't Have Enough Money!", parent = self)        
        ###########################################################################################################################

        ##########################################################Lottery##########################################################
        self._lotterytitle = Label(self, text = "LOTTERY! : You can win 0$ ~ 100*(money you put in)", font = ("Arial", 15, "bold"))
        self._lotterytitle.grid()

        self._lotterymoney = IntVar()
        self._lotteryentry = Entry(self, textvariable = self._lotterymoney, font = ("Arial", 15, "bold"))
        self._lotteryentry.grid()

        self._lotterybutton = Button(self, text = "See the results", font = ("Arial", 15, "bold"), command = lambda: lottery())
        self._lotterybutton.grid()

        def lottery():
            x = self._lotterymoney.get()
            if x <= counter1.get():
                l = random.randint(1, 100)
                if 100 >= l > 99:
                    counter1.set(counter1.get() + x*99)
                    showinfo(message = "Congratulations! You've won First Prize(100*(Money you have put in))", parent = self)
                elif 99 >= l > 94:
                    counter1.set(counter1.get() + x*29)
                    showinfo(message = "Congratulations! You've won Second Prize(20*(Money you have put in))", parent = self)
                elif 94 >= l > 80:
                    counter1.set(counter1.get() + x*9)
                    showinfo(message = "Congratulations! You've won Third Prize(10*(Money you have put in))", parent = self)
                else:
                    counter1.set(counter1.get() - x)
                    showinfo(message = "Sorry! You've Lost", parent = self)
            else:
                showwarning(message = "You Don't Have Enough Money!", parent = self)
        ###########################################################################################################################

        ########################################Additional Income(Earns Money Every Second)########################################
        self._additionaltitle = Label(self, text = "Additional Income(Earns Money Every Second)", font = ("Arial", 15, "bold"))
        self._additionaltitle.grid()




def main():
    GameFrame().mainloop()

main()

在额外收入部分,我想给对应物1添加某种值m,但是我不知道如何做。

共有1个答案

贝滨海
2023-03-14

要使函数在tkinter应用程序中每秒运行一次,请在之后使用

后(delay_ms,回调=无,*args)

注册在给定时间后调用的报警回调。

应该在要定期调用的函数末尾调用此方法。例如,想象一个MyWidget类,我想每秒运行foo方法:

class MyWidget(tk.Widget):
    def foo(self):
        print("foo")
        self.after(1000, self.foo)

 类似资料:
  • 问题内容: 抱歉,我有点菜鸟,我只想知道我如何让此javascript每秒钟运行一次? 源代码: 问题答案: 使用setInterval()每x毫秒运行一段代码。 您可以将要每秒运行的代码包装到一个名为的函数中。 因此它将是: 要停止它,可以运行:

  • 问题内容: 我想每60秒在Python上执行一个函数,但是我不想同时被阻塞。 如何异步进行? 使用此代码,函数f在20秒time.time中每3秒执行一次。最后,它给出了一个错误,我认为这是因为threading.timer尚未被取消。 如何取消呢? 提前致谢! 问题答案: 您可以尝试threading.Timer类:http : //docs.python.org/library/threadi

  • 本文向大家介绍python每隔N秒运行指定函数的方法,包括了python每隔N秒运行指定函数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python每隔N秒运行指定函数的方法。分享给大家供大家参考。具体如下: 这是一个类似定时器的效果,每隔指定的秒数运行指定的函数,采用线程实现,代码简单实用。 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 我想每0.5秒触发一次功能,并且能够启动,停止和重置计时器。我不太了解Python线程的工作方式,并且在使用python计时器时遇到了困难。 但是,当我执行两次时,我会不断得到帮助。有没有解决的办法?我尝试在每次开始之前申请。 伪代码: 问题答案: 最好的方法是一次启动计时器线程。在计时器线程中,你需要编写以下代码 然后,在启动计时器的代码中,可以停止事件来停止计时器。

  • 问题内容: 我正在开发Django应用。我有一个API端点,如果需要,它必须执行必须重复几次的功能(直到满足特定条件为止)。我现在如何处理- 虽然我知道这是一种可怕的方法,并且我不应该阻塞2秒钟,但是我不知道该如何解决。 等待4秒后,此方法起作用。但是我想要使循环在后台运行并在some_fn返回True时停止的东西。(此外,可以肯定some_fn将返回True) 编辑- 阅读Oz123的响应给了我

  • 我有一个函数,使API调用服务器和更新用户界面与新数据。我想使,使每30秒我使API调用不同的url每次?这些API调用应该是不间断的,只要应用程序正在运行。