(出乎意料)使用 setworld坐标() 时出现类型错误



我正在尝试使用 Tkinter 创建一个画布,其中包含要在 Turtle Graphics 中使用的自定义坐标。方法setworld坐标((接受四个参数,我像往常一样做了。不知道为什么这里有一个类型错误。

from tkinter import *
import turtle
master = Tk()
cv = Canvas(master, width = 200, height = 200)
screen = turtle.TurtleScreen(cv)
screen.setworldcoordinates(-50, -50, 50, 50)

这是我收到的错误消息:

Traceback (most recent call last):
  File "(file path)temp.py", line 8, in <module>
    screen.setworldcoordinates(-50, -50, 50, 50)
  File "(file path)turtle.py", line 1095, in setworldcoordinates
    self.screensize(wx-20, wy-20)
TypeError: unsupported operand type(s) for -: 'str' and 'int'

在挖掘源代码后,我发现它使用不同的方法来获取 Canvas 的大小。

如果Canvas未嵌入到窗口中(未附加到布局/几何管理器(,则使用

cv['width'], cv['height'] 

它给出字符串大小。

如果Canvas嵌入到窗口中,则使用

cv.winfo_width(), cv.winfo_height()

将大小作为数字给出

你必须使用即

cv.pack()

cv.grid()

来解决问题。

但它不适用于cv.place()

from tkinter import *
import turtle
master = Tk()
cv = Canvas(master, width=200, height=200)
cv.pack() # <-- solution
screen = turtle.TurtleScreen(cv)
screen.setworldcoordinates(-50, -50, 50, 50)

脚本的名称不应与要导入的模块相同。另请参阅以下链接

相关内容

最新更新