2016-05-10 19 views
1

我正在使用python圖形模塊(John Zelle)。我以前從來沒有遇到過任何問題,我可能只是忽略了一些東西,但我找不到它。我試圖畫一個tic tac腳趾板。這些行沒有繪製。殼牌說這個錯誤是在graphics.py中,但我從不同的來源redownloaded它,甚至掠過它,並不能找出我做錯了什麼。請幫忙。來自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

我添加了運行代碼時獲得的回溯,如果您有不同的請求,請鏈接到您正在使用的'graphics.py'並且通過您正在獲取的錯誤。 –

+0

謝謝。是的,這是我得到的同樣的錯誤。這與我的座標有關,因爲當我移除它時,它工作正常。猜猜我需要多練習一下... – Seth

+0

我不認爲這是對你的,你用相同的y座標給它兩個點,所以Y中的差值爲0,它會嘗試用一些除法來縮放(注意最後一行是'/ self.yscale'),所以我只是詛咒庫並使用稍微偏斜的行。 –

回答

0

有點通過graphics.py內力學挖後,我注意到你有東西有點perculiar:

win.setCoords(8,1,6,1) 

這似乎有點奇怪我看文檔字符串:

將窗口的座標設置爲從 左下角的(x1,y1)運行到(x2,y2)i在右上角。

請注意,如果您使用的是IDLE你可以通過win全球或做GraphWin.setCoords(看到這個文檔字符串和文檔字符串應該出現在(

image of the docstring explained above

所以您要定義屏幕從左下角的(8,1)到右上角的(6,1)......等等,什麼?

這意味着不僅您的x座標非常向後,而且Line(Point(2,1),Point(2,5))甚至不在8-6的x範圍內。

畫布的高度從1到1,因爲它的高度爲導致未定義的行爲。 (因此ZeroDivisionError

我想你想的跨度更喜歡:

win.setCoords(0,0,6,7) 

這將讓東西在屏幕上正常顯示,但我希望你能調整確切的數字適當:)