Python turtle 获取 tkinter root

Python turtle get tkinter root

Python 乌龟与 tkinter 一起工作。如何从 tkinter 获取你知道的 root? 像这样:

import tkinter
root = tkinter.Tk()

但对于乌龟。

turtle.getcanvas()

returns你(我)正在寻找的对象。

顶层widget可以通过turtle的winfo_toplevel方法获得canvas:

import turtle

canvas = turtle.getcanvas()
root = canvas.winfo_toplevel()

它是Tk的子类型:

import tkinter

assert type(root) is turtle._Root
assert isinstance(root, tkinter.Tk)

正如@das-g

所指出的
root = turtle.getcanvas().winfo_toplevel()

给你一个代表海龟根的对象window。


但是,如果您的用例是将海龟图形与成熟的 Tkinter 应用程序集成,则应始终首选 显式方法:

from tkinter import *
import turtle

root = Tk()
turtle_canvas = turtle.Canvas(root)
turtle_canvas.pack(fill=BOTH, expand=True) # fill the entire window

protagonist = turtle.RawTurtle(turtle_canvas)
protagonist.fd(100) # etc.

这增加了能够控制乌龟的位置和大小的额外好处canvas。另外,拥有明确的代码有助于其他人理解它。