2014-04-01 92 views
1

試圖在Tkinter中繪製一個8 x 8的網格,並且我繪製了垂直線,但我似乎無法正確繪製水平線。Tkinter Python中的水平線

這裏是我的代碼:

from tkinter import * 

class CanvasGrid: 
def __init__(self): 
    self.window = Tk() 
    self.window.title("Grid") 
    self.canvas = Canvas(self.window, width=128, height=128, bg="white") 
    self.canvas.pack() 

def displayVertical(self): 
    self.canvas.create_line(16, 0, 16, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(32, 0, 32, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(48, 0, 48, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(64, 0, 64, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(80, 0, 80, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(96, 0, 96, 128, fill="red", 
          tags="line") 
    self.canvas.create_line(112, 0, 112, 128, fill="red", 
          tags="line") 


def displayHorizontal(self): 
    self.canvas.create_line(50, 50, 50, 50, fill="blue", 
          tags="line") 

謝謝!

回答

-1

main()函數沒有包含displayHorizo​​ntal(),這就是水平線沒有出現的原因。

+0

誰知道'main'包含了什麼?他沒有在他的代碼中加入。他所包含的是證明他從座標「(50,50)」畫出一條線到座標(50,50),這實際上是一個點:) –

0

線:

def displayHorizontal(self): 
    self.canvas.create_line(50, 50, 50, 50, fill = "blue", 
          tags = "line") 

沒有長度,它開始並且在x和y座標50結束。爲什麼不試試0,50,128,50

0

50 50 50 50是一個點不是線,這就是爲什麼你沒有看到它。

信息: canvas.create_line(startx的,starty,endx,恩迪那麼其他ARGS

嘗試

canvas.create_line(0,50,widthofwindow,50 
1

,因爲它是任一方向相同的代碼,你可以通過如果需要,可將值初始化爲可創建/兩個方向的函數。

class CanvasGrid: 
    def __init__(self): 
     self.window = Tk() 
     self.window.title("Grid") 
     self.canvas = Canvas(self.window, width=128, 
          height=128, bg = "white") 
     self.display_lines(16, 0, 16, 128, "red") 
     self.display_lines(0, 16, 128, 16, "blue") 
     self.canvas.pack() 

     self.window.mainloop() 

    def display_lines(self, x1, y1, x2, y2, color): 
     x_plus = x1  ## all lines are evenly spaced 
     y_plus = y1 
     for ctr in range(7): 
      self.canvas.create_line(x1, y1, x2, y2, fill = color) 
      x1 += x_plus 
      x2 += x_plus 
      y1 += y_plus 
      y2 += y_plus 

CG = CanvasGrid()