(意外)使用 setworldcoordinates() 时出现类型错误
(Unexpected) TypeError while using setworldcoordinates()
我正在尝试使用 Tkinter 创建一个 canvas 并在 Turtle Graphics 中使用自定义坐标。 setworldcoordinates() 方法接受四个参数,我照常进行。不确定为什么这里会出现 TypeError。
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'
脚本名称不应与您正在导入的模块名称相同。
另见 following link
在深入研究源代码后,我发现它使用不同的方法来获取 Canvas 的大小。
如果 Canvas
未嵌入 window(未附加到 layout/geometry 管理器),则它使用
cv['width'], cv['height']
以字符串形式给出大小。
如果 Canvas
嵌入 window 则它使用
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)
我正在尝试使用 Tkinter 创建一个 canvas 并在 Turtle Graphics 中使用自定义坐标。 setworldcoordinates() 方法接受四个参数,我照常进行。不确定为什么这里会出现 TypeError。
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'
脚本名称不应与您正在导入的模块名称相同。 另见 following link
在深入研究源代码后,我发现它使用不同的方法来获取 Canvas 的大小。
如果 Canvas
未嵌入 window(未附加到 layout/geometry 管理器),则它使用
cv['width'], cv['height']
以字符串形式给出大小。
如果 Canvas
嵌入 window 则它使用
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)