首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用tkinter设置海龟追踪器错误?

如何用tkinter设置海龟追踪器错误?
EN

Stack Overflow用户
提问于 2022-12-03 20:00:19
回答 1查看 24关注 0票数 0

我必须生成两个海龟窗口并绘制每个窗口,所以我使用tkinter创建和显示窗口。我的代码当前打开正确的屏幕并绘制它,但是海龟速度确实很慢,所以我想将乌龟跟踪器设置为false来使用更新函数,但是我不知道如何。

这是我的turtle_interpreter.py文件,它有我用来绘制L-系统的所有函数:

代码语言:javascript
复制
import turtle
from tkinter import *


class Window(Tk):
    def __init__(self, title, geometry):
        super().__init__()
        self.running = True
        self.geometry(geometry)
        self.title(title)
        self.protocol("WM_DELETE_WINDOW", self.destroy_window)
        self.canvas = Canvas(self)
        self.canvas.pack(side=LEFT, expand=True, fill=BOTH)
        self.turtle = turtle.RawTurtle(turtle.TurtleScreen(self.canvas))


    def update_window(self):
        '''
        sets window to update
        '''
        if self.running:
            self.update()


    def destroy_window(self):
        '''
        sets window to close
        '''
        self.running = False
        self.destroy()


def drawString(turt, dstring, distance, angle):
    '''Interpret the characters in string dstring as a series
    of turtle commands. Distance specifies the distance
    to travel for each forward command. Angle specifies the
    angle (in degrees) for each right or left command. The list   
    of turtle supported turtle commands is:
    F : forward
    - : turn right
    + : turn left
    '''
    for char in dstring:
        if char == 'F':
            turt.forward(distance)
        elif char == '-':
            turt.right(angle)
        elif char == '+':
            turt.left(angle)


def place(turt, xpos, ypos, angle=None):
    '''
    places turtle at given coordinates and angle
    '''
    turt.penup()
    turt.goto(xpos, ypos)
    if angle != None:
        turt.setheading(angle)
    turt.pendown()


def goto(turt, xpos, ypos):
    '''
    moves turtle to given coordinates
    '''
    turt.penup()
    turt.goto(xpos, ypos)
    turt.pendown()


def setColor(turt, color):
    '''
    sets turtle color
    '''
    turt.color(color)

这就是调用函数的文件。运行它将绘制L-系统。

代码语言:javascript
复制
import turtle_interpreter as turt_int
import lsystem_scene_three as lsystem

def turtle_scene_two():
    '''
    generates scene two
    '''
    # create window
    win_two = turt_int.Window('Turtle Scene 2', '640x480+650+0')

    # assign turtle
    turt2 = win_two.turtle

    # lsystem setup
    lsystemFile = lsystem.Lsystem('lsystem_scene_two.txt')

    tstr = lsystemFile.buildString(4)

    # draw stuff
    turt_int.setColor(turt2, (0, 0, 0))
    turt_int.place(turt2, 0, -200, 90)
    turt_int.drawString(turt2, tstr, 4, 90)

    # update window (loop)
    while win_two.running:
        win_two.update_window()

turtle_scene_two()

希望这是有意义的。如果没有的话请告诉我。

感谢你的帮助!

尝试了几件事,但没有什么是有希望的。调用乌龟会生成另一个屏幕(我不想要)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-04 18:31:00

由于您没有提供所有的代码,所以我无法测试这个,所以我猜一个好的开始将改变这个:

代码语言:javascript
复制
self.turtle = turtle.RawTurtle(turtle.TurtleScreen(self.canvas))

这样的事情:

代码语言:javascript
复制
screen = turtle.TurtleScreen(self.canvas)
screen.tracer(False)
self.turtle = turtle.RawTurtle(screen)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74670230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档