Python 在线程上下文中使用计时器函数时出现问题

Python 在线程上下文中使用计时器函数时出现问题,python,multithreading,Python,Multithreading,在我参加的课程中,我在为我的最后一个项目做游戏时,我试图弄清楚如何使用计时器,但仍然能够与其他运行的代码进行交互。在我的研究中,我遇到了线程,到目前为止,它是有效的,但问题是,当涉及到实践时,计时器不工作,但它很快就会自动重复,我不知道如何让它慢下来。我尝试过用区间数替换其他任何东西,但不管它是什么,它仍然可以做同样的事情 -我也知道代码很混乱,我是一名学生,我还在学习。我相信有更好的方法来做我做过的很多事情。这也是我关于堆栈溢出的第一个问题,所以我希望我做得对 它在129号线和130号线 ti

在我参加的课程中,我在为我的最后一个项目做游戏时,我试图弄清楚如何使用计时器,但仍然能够与其他运行的代码进行交互。在我的研究中,我遇到了线程,到目前为止,它是有效的,但问题是,当涉及到实践时,计时器不工作,但它很快就会自动重复,我不知道如何让它慢下来。我尝试过用区间数替换其他任何东西,但不管它是什么,它仍然可以做同样的事情

-我也知道代码很混乱,我是一名学生,我还在学习。我相信有更好的方法来做我做过的很多事情。这也是我关于堆栈溢出的第一个问题,所以我希望我做得对

它在129号线和130号线

timer = threading.Timer(1, clickers)
timer.start

将海龟作为trtl导入
导入线程
导入时间
wn=trtl.Screen()
bgpic(“clouds.png”)
字体设置=(“Arial”,15,“正常”)
字体设置2=(“Arial”,20,“粗体”)
sun\u img=“sun.gif”
wn.addshape(“sun.gif”)
太阳=海龟(形状=太阳)
sun.penup()
太阳后藤(0175)
clkr_img=“rocketship.gif”
wn.addshape(“rocketship.gif”)
clkr=trtl.海龟(形状=clkr_img)
clkr.penup()
clkr.左(90)
clkr.goto(0,-110)
moneya=trtl.Turtle()
moneya.hideturtle()
moneya.penup()
moneya.goto(-180,-180)
货币=0
upg1price=trtl.Turtle()
upg1price.hideturtle()
upg1price.penup()
upg1price.goto(63,-20)
csup=trtl.Turtle()
csup.hideturtle()
csup.penup()
后藤(63,-50)
broke=trtl.Turtle()
破产
shoptf=0
破产
破产。转到(-170,-30)
破碎的铅笔颜色(“红色”)
shop\u img=“cart.gif”
wn.addshape(“cart.gif”)
商店=海龟(形状=商店)
车间形状尺寸(0.5)
shop.penup()
商店后藤(150150)
back\u img=“backk.gif”
wn.addshape(“backk.gif”)
背=背。龟(形状=背)
back.penup()
back.hideturtle()
返回。转到(-110135)
ugrd_img=“upgrade1.gif”
wn.addshape(“upgrade1.gif”)
乌龟(形状=乌龟)
ugrd.penup()
ugrd.goto(0,-10)
ugrd.hideturtle()
cs_img=“clicksla.gif”
wn.addshape(“clicksla.gif”)
cs=trtl.海龟(形状=cs_img)
政务司司长
cs.后藤(0,-40)
政务司司长
dmg=5
wn.addshape(“rktboom.gif”)
clkrdmg=0
价格=50
价格2=75
fmvmnt=1
def gostore(x,y):
全球价格
upg1price.write(“$”+str(舍入(价格)),font=font\u设置)
csup.write(“$”+str(圆形(价格2)),font=font\u设置)
back.showturtle()
clkr.hideturtle()
shop.hideturtle()
乌龟
政务司司长()
sun.hideturtle()
bgpic(“storefront.png”)
百分比2=50
百分比numb=25
def升级1(x,y):
全球货币,dmg,价格,百分比,fmvmnt
如果(货币<价格):
破产。写下(“你负担不起!”,font=font\u setup2)
时间。睡眠(3)
破镜重圆
其他:
货币=货币轮(价格)
moneya.clear()
moneya.write(“MONEY:$”+str(MONEY),font=font\u设置)
dmg=dmg+5
fmvmnt=fmvmnt+1
upg1price.clear()
百分比=(百分比编号*价格)/100
价格=整数(价格)+百分比
upg1price.write(“$”+str(舍入(价格)),font=font\u设置)
clik=0
mor=0
计时器=无
def点击器(x,y):
全球货币,价格2,百分比2,clik,clkrdmg,计时器,clkr_img
如果(货币<价格2):
破产。写下(“你负担不起!”,font=font\u setup2)
时间。睡眠(3)
破镜重圆
其他:
货币=货币轮(价格2)
moneya.clear()
moneya.write(“MONEY:$”+str(MONEY),font=font\u设置)
clik=clik+1
clkrdmg=clkrdmg+5
csup.clear()
百分比2=(百分比2*价格2)/100
价格2=整数(价格2)+百分比2
csup.write(“$”+str(圆形(价格2)),font=font\u设置)
当clik>=1时:
货币=货币+clkrdmg
moneya.clear()
moneya.write(“MONEY:$”+str(MONEY),font=font\u设置)
clkr.前进(1)
如果(abs(clkr.ycor()-sun.ycor())<5):
clkr.shape(“rktboom.gif”)
时间。睡眠(1)
clkr.hideturtle()
clkr.shape(“rocketship.gif”)
clkr.goto(0,-100)
clkr.showturtle()
定时器=线程。定时器(1,点击器)
计时器。启动
def增益点(x,y):
全球货币、dmg、fmvmnt
金钱=金钱+dmg
moneya.clear()
moneya.write(“MONEY:$”+str(MONEY),font=font\u设置)
如果(abs(clkr.ycor()-sun.ycor())<5):
clkr.goto(0,-100)
clkr.远期(fmvmnt)
def反向单击(x,y):
bgpic(“clouds.png”)
upg1price.clear()
csup.clear()
破镜重圆
back.hideturtle()
clkr.showturtle()
shop.showturtle()
ugrd.hideturtle()
sun.showturtle()
moneya.clear()
政务司司长
clkr.onclick(增益点)
cs.onclick(点击器)
shop.onclick(gostore)
back.onclick(backclick)
ugrd.onclick(升级1)
听着
wn.mainloop()

我已删除标签。该标记指向库,但不适用于用Python编写的游戏。你的意思是:
timer.start()
?@quamrana是的,我试过了,但即使我修复了没有任何更改的问题,我也尝试在没有游戏的情况下在单独的软件中单独运行该代码,而且效果很好
import turtle as trtl
import threading
import time
wn = trtl.Screen()

wn.bgpic("clouds.png")
font_setup = ("Arial", 15, "normal")
font_setup2 = ("Arial", 20, "bold")
sun_img = "sun.gif"
wn.addshape("sun.gif")
sun = trtl.Turtle(shape = sun_img)
sun.penup()
sun.goto(0, 175)
clkr_img = "rocketship.gif"
wn.addshape("rocketship.gif")
clkr = trtl.Turtle(shape = clkr_img)
clkr.penup()
clkr.left(90)
clkr.goto(0,-110)
moneya = trtl.Turtle()
moneya.hideturtle()
moneya.penup()
moneya.goto(-180, -180)
money = 0
upg1price = trtl.Turtle()
upg1price.hideturtle()
upg1price.penup()
upg1price.goto(63,-20)
csup = trtl.Turtle()
csup.hideturtle()
csup.penup()
csup.goto(63,-50)
broke = trtl.Turtle()
broke.hideturtle()
shoptf = 0
broke.penup()
broke.goto(-170,-30)
broke.pencolor("red")
shop_img = "cart.gif"
wn.addshape("cart.gif")
shop = trtl.Turtle(shape = shop_img)
shop.shapesize(0.5)
shop.penup()
shop.goto(150,150)
back_img = "backk.gif"
wn.addshape("backk.gif")
back = trtl.Turtle(shape = back_img)
back.penup()
back.hideturtle()
back.goto(-110,135)
ugrd_img = "upgrade1.gif"
wn.addshape("upgrade1.gif")
ugrd = trtl.Turtle(shape = ugrd_img)
ugrd.penup()
ugrd.goto(0,-10)
ugrd.hideturtle()
cs_img = "clicksla.gif"
wn.addshape("clicksla.gif")
cs = trtl.Turtle(shape = cs_img)
cs.penup()
cs.goto(0, -40)
cs.hideturtle()
dmg = 5
wn.addshape("rktboom.gif")
clkrdmg = 0
price = 50
price2= 75
fmvmnt = 1
def gostore(x,y):
  global price
  upg1price.write("$" + str(round(price)), font=font_setup)
  csup.write("$" + str(round(price2)), font=font_setup)
  back.showturtle()
  clkr.hideturtle()
  shop.hideturtle()
  ugrd.showturtle()
  cs.showturtle()
  sun.hideturtle()
  wn.bgpic("storefront.png")
percentnumb2 = 50
percentnumb = 25
def upgrade1(x,y):
  global money,dmg,price,percent,fmvmnt
  if (money < price):
    broke.write("You cant afford!", font=font_setup2)
    time.sleep(3)
    broke.clear()
  else:
money = money - round(price)
moneya.clear()
moneya.write("MONEY: $" + str(money), font=font_setup)
dmg = dmg + 5
fmvmnt = fmvmnt + 1
upg1price.clear()
percent = (percentnumb*price)/100
price = round(price) + percent
upg1price.write("$" + str(round(price)), font=font_setup)
clik = 0
mor = 0
timer = None
def clickers(x,y):
  global money,price2,percent2,clik,clkrdmg,timer,clkr_img
  if (money < price2):
    broke.write("You cant afford!", font=font_setup2)
    time.sleep(3)
    broke.clear()
  else:
    money = money - round(price2)
    moneya.clear()
    moneya.write("MONEY: $" + str(money), font=font_setup)
    clik = clik + 1
    clkrdmg = clkrdmg + 5
    csup.clear()
    percent2 = (percentnumb2*price2)/100
    price2 = round(price2) + percent2
    csup.write("$" + str(round(price2)), font=font_setup)
    while clik >= 1:
      money = money + clkrdmg
      moneya.clear()
      moneya.write("MONEY: $" + str(money), font=font_setup)
      clkr.forward(1)
      if (abs(clkr.ycor() - sun.ycor()) < 5):
        clkr.shape("rktboom.gif")
        time.sleep(1)
        clkr.hideturtle()
        clkr.shape("rocketship.gif")
        clkr.goto(0, -100)
        clkr.showturtle()
      timer = threading.Timer(1, clickers)
      timer.start
def gainpoint(x,y):
  global money,dmg,fmvmnt
  money = money + dmg
  moneya.clear()
  moneya.write("MONEY: $" + str(money), font=font_setup)
  if (abs(clkr.ycor() - sun.ycor()) < 5):
    clkr.goto(0, -100)
  clkr.forward(fmvmnt)
def backclick(x,y):
  wn.bgpic("clouds.png")
  upg1price.clear()
  csup.clear()
  broke.clear()
  back.hideturtle()
  clkr.showturtle()
  shop.showturtle()
  ugrd.hideturtle()
  sun.showturtle()
  moneya.clear()
  cs.hideturtle()
clkr.onclick(gainpoint)
cs.onclick(clickers)
shop.onclick(gostore)
back.onclick(backclick)
ugrd.onclick(upgrade1)

wn.listen()
wn.mainloop()