【问题标题】:Python Canvas not expanding for turtle printing automaticallyPython Canvas 不会自动扩展为海龟打印
【发布时间】:2017-12-18 02:59:30
【问题描述】:

我有一个关于 L 系统的项目。我试图添加一个打印 L 系统的海龟;但是,与文本字段不同,画布不会扩展。当我打印更多文本时,我的文本字段通过滚动条扩展得很好。但是,乌龟卡在画布上。我真的被困住了。

frame2 = tki.Frame(frame, bg='yellow', width=810, height=510)
frame2.pack()
frame2.place(x=500,y=5)
cv = Canvas(frame2, width=2000, height=2000)
cv.place(x=0, y=0)

screen = turtle.TurtleScreen(cv)
t = turtle.RawTurtle(screen)

hbar=Scrollbar(frame2,orient=HORIZONTAL)
hbar.pack(side=BOTTOM,fill=X)
hbar.config(command=cv.xview)
vbar=Scrollbar(frame2,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=cv.yview)
cv.config(width=800,height=500)
cv.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
cv.pack(side=LEFT,expand=True,fill=BOTH)

【问题讨论】:

  • 不要同时使用pack()place()——它们是两个不同的“布局管理器”
  • 创建最小的工作示例,以便我们运行它并查看您的问题。
  • canas 无法扩展,因为它没有此功能 - 您可能必须手动进行。
  • 感谢您抽出宝贵时间,我会牢记这些。我有一个从框架扩展的分形结构,在使用海龟打印时,我无法看到完整的图片。 ScrolledCanvas 不能正常工作。
  • 滚动画布仅在您使用滚动条或编写将滚动它的代码时滚动。当您使用海龟绘图时,您可以检查位置并滚动画布。

标签: python canvas tkinter scrollbar turtle-graphics


【解决方案1】:

如果我正确理解您的问题,为什么海龟库为此目的提供的ScrolledCavas 不适合您:

编辑:我已经从框架大小开始画布大小,并添加了ScrolledCanvasreset() 方法来动态扩展画布:

import tkinter as tk
from turtle import TurtleScreen, RawTurtle, ScrolledCanvas

size = 100
canvsize = 300

root = tk.Tk()
root.geometry('600x500')

frame = tk.Frame(root, width=300, height=300)
frame.pack()
frame.place(x=50, y=50)

canvas = ScrolledCanvas(frame, canvwidth=canvsize, canvheight=canvsize)
canvas.pack(side=tk.LEFT)

screen = TurtleScreen(canvas)
screen.bgcolor('yellow')

turtle = RawTurtle(screen, visible=False)
turtle.dot(size, "green")

def expand():
    global canvsize, size

    if size < 800:
        size += 10
        if size > canvsize:
            canvsize += 100
            canvas.reset(canvwidth=canvsize, canvheight=canvsize)

        turtle.dot(size, "green")
        screen.ontimer(expand, 100)

screen.ontimer(expand, 100)

screen.mainloop()

【讨论】:

  • 感谢您的宝贵时间。你是如此接近我的意思。问题是我想观察从 100 增长到 800 的点。换句话说,我想创建一个没有滚动条的屏幕,但是当海龟开始打印并尝试超过帧大小时,帧应该用滚动条展开。像一个文本框...
  • @VuralErdogan,我已经对其进行了重新设计,因此它最初没有滚动条,但在图像扩展超过框架的水平和垂直边缘时添加它们。可能不完美但简单,只使用乌龟ScrolledCanvas
  • 哦!这正是我试图做的。十分感谢。我将在我的项目中使用您的技术。
猜你喜欢
  • 2016-08-11
  • 2018-04-16
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
相关资源
最近更新 更多