【发布时间】:2021-09-18 01:29:25
【问题描述】:
from turtle import *
import tkinter
r = 0
shapes = [shape("square"), shape("turtle"), shape("triangle")]
def hello():
while True:
right(100)
forward(100)
left(100)
r +=1
hello()
tkinter.mainloop()
每当我删除 r +=1 时,它都可以正常工作。但我一添加它,它就崩溃了。我为什么要使用计数器的主要原因是因为最初我的代码看起来像这样:
from turtle import *
import tkinter
r = 0
shapes = [shape("square"), shape("turtle"), shape("triangle")]
def hello():
while True:
right(r)
forward(r)
left(r)
r +=1
hello()
tkinter.mainloop()
但这会让程序崩溃得更快,这很有趣。有人遇到类似问题吗?
【问题讨论】:
-
“崩溃”是什么意思?您收到错误消息吗?
-
不,窗口只是关闭了。我想你可以称之为“崩溃”。感谢 tkinter 模块,我可以随时保持窗口打开和关闭。但是柜台阻碍了我这样做
-
这是因为引发了异常“UnboundLocalError: local variable 'r' referenced before assignment”。在
hello()的开头添加global r。顺便说一句,您应该使用after()而不是 while 循环。 -
最好将
r = 0移动到函数内部,因为它不会在其他任何地方使用。它不需要是全局的。
标签: python python-3.x tkinter turtle-graphics python-turtle