我正在使用python图形模块(John Zelle)。我之前从未遇到过任何问题,我可能只是忽略了一些东西,但我找不到它。我正在尝试绘制一个tic tac toe board。线条没有插入.Shell说错误是在graphics.py中,但是我已经从不同来源重新加载它,甚至掠过它,并且无法弄清楚我做错了什么。请帮忙。
#here is my code sample
#import graphics library
from graphics import *
#build interface
def interface():
win = GraphWin("Tic Tac Toe", 600,700)
win.setCoords(8,1,6,1)
#horizontal line #1
h1 = Line(Point(2,1),Point(2,5))
h1.draw(win)
#...there is more but it's repetitive so I won't waste time.
>>> interface()
Traceback (most recent call last):
File ".../test.py", line 12, in <module>
interface()
File ".../test.py", line 10, in interface
h1.draw(win)
File "/LIB/graphics.py", line 450, in draw
self.id = self._draw(graphwin, self.config)
File "/LIB/graphics.py", line 627, in _draw
x1,y1 = canvas.toScreen(p1.x,p1.y)
File "/LIB/graphics.py", line 335, in toScreen
return self.trans.screen(x,y)
File "/LIB/graphics.py", line 386, in screen
ys = (self.ybase-y) / self.yscale
ZeroDivisionError: float division by zero
答案 0 :(得分:0)
经过一些挖掘graphics.py
的内在机制后,我注意到你有一些奇怪的东西:
win.setCoords(8,1,6,1)
对于我来说,查看文档字符串似乎有点奇怪:
设置从(x1,y1)开始运行的窗口坐标 左下角到右上角的(x2,y2)。
请注意,如果您使用IDLE,则可以通过将win
设为全局或执行GraphWin.setCoords(
来查看此文档字符串,并且文档字符串应显示在(
因此,您将屏幕定义为从左下角的(8,1)到右上角的(6,1)......等等,是什么?
这意味着不仅您的x坐标非常向后,而且Line(Point(2,1),Point(2,5))
行甚至不在8-6
的x范围内。
画布的高度从1到1,因为它的高度为 0 ,导致未定义的行为。 (因此ZeroDivisionError
)
我认为你想要的跨度更像:
win.setCoords(0,0,6,7)
这样可以在屏幕上正确显示内容,但我希望您能够恰当地调整确切的数字:)