1 回答

TA貢獻1921條經驗 獲得超9個贊
我認為大量的點是導致程序在一段時間后開始運行緩慢的原因,我想知道是否有人可以幫助我想出一個解決方法。
令人驚訝的是,沒有。這是您自己的儀器(進度條)減慢您的速度。注釋掉:
pb.update()
看看會發(fā)生什么。
我覺得我的編碼風格與這里的許多人非常不同,但我希望這不是問題。
這是一個與糟糕的編碼風格重疊的問題。例如,缺少空格、使用分號、代碼中的有效無操作等。我對您的代碼的返工:
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()。
添加回答
舉報