1 回答
TA贡献1921条经验 获得超9个赞
我认为大量的点是导致程序在一段时间后开始运行缓慢的原因,我想知道是否有人可以帮助我想出一个解决方法。
令人惊讶的是,没有。这是您自己的仪器(进度条)减慢您的速度。注释掉:
pb.update()
看看会发生什么。
我觉得我的编码风格与这里的许多人非常不同,但我希望这不是问题。
这是一个与糟糕的编码风格重叠的问题。例如,缺少空格、使用分号、代码中的有效无操作等。我对您的代码的返工:
from turtle import Screen, Turtle
import tkinter as tk
from tkinter import ttk
from random import randrange
def clear():
turtle.clear()
plist.clear()
def dot(x, y):
turtle.goto(x, y)
turtle.dot(5, 'blue')
plist.append(turtle.position())
def run(x, y):
screen.onscreenclick(None, btn=1)
screen.onscreenclick(None, btn=3)
screen.onkey(None, 'c')
length = len(plist)
flag = length >= 4
pb['maximum'] = length * 1000
xyc_old = 0
for _ in range(length * 100):
for _ in range(10):
xyc = randrange(length)
if flag:
while xyc == xyc_old:
xyc = randrange(length)
xyc_old = xyc
x, y = turtle.position()
dx, dy = plist[xyc]
turtle.goto((x + dx) / 2, (y + dy) / 2)
turtle.dot(2)
pb['value'] += 10
pb.update()
plist.clear()
pb['value'] = 0
screen.onscreenclick(dot, btn=1)
screen.onscreenclick(run, btn=3)
screen.onkey(clear, 'c')
plist = []
screen = Screen()
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
turtle.setundobuffer(None)
turtle.color('red')
turtle.penup()
pb = ttk.Progressbar(orient='horizontal', length=screen.window_width(), mode='determinate')
pb.pack(side=tk.BOTTOM)
pb['value'] = 0
screen.onscreenclick(dot, btn=1)
screen.onscreenclick(run, btn=3)
screen.onkey(clear, 'c')
screen.listen()
screen.mainloop()
其他变化包括:
plist = []没有.in将Clear()无法工作global plist。改为使用plist.clear()。
您还需要禁用(并重新启用)wn.onkey(Clear, "c"),Run否则您的用户可能会破坏程序。您还需要单独禁用两个鼠标按钮。
你真的想要randrange(),没有randint()。
添加回答
举报
