Tkinter中水平线的绘制
我在用Tkinter画一个8 x 8的网格,现在竖线已经画好了,但横线却总是画不对。
这是我的代码:
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")
谢谢!
4 个回答
-1
因为 main()
这个函数里没有包含 displayHorizontal()
,所以水平线没有显示出来。
0
这一行:
def displayHorizontal(self):
self.canvas.create_line(50, 50, 50, 50, fill = "blue",
tags = "line")
没有长度,它在x和y坐标上都是从50开始到50结束。你可以试试用 0,50,128,50
这个值。
2
因为这段代码在两个方向上是一样的,所以你可以把起始值传给一个函数,这个函数可以根据需要创建一个方向或者两个方向。
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()
3
50 50 50 50
是一个点,不是一条线,所以你看不到它。
信息:
canvas.create_line(startx, starty, endx, endy __then other args__)
尝试
canvas.create_line(0,50,widthofwindow,50