如何在python中的tkinter上创建一个网格?

时间:2015-11-30 19:23:35

标签: python-2.7 tkinter

我设法创建了一个具有给定半径,起点和多个点的函数。它将创建一个大圆圈,并且通过这个圆圈将创建4个小圆圈。 我想在背景上添加一个网格,从左上角开始每隔100个像素显示TKinter中的Y轴和X轴。坐标原点应该是左上角。 例如,如果屏幕是300x300,则窗口将在其X轴上具有3条线(100,200和300),从左到右,从上到下。 网格作为坐标系。

我如何创建法线的示例。我使用一个包含2点起点和终点的线类:

rootWindow = Tkinter.Tk()
rootFrame = Tkinter.Frame(rootWindow, width=1000, height=800, bg="white")
rootFrame.pack()
canvas = Tkinter.Canvas(rootFrame, width=1000, height=800, bg="white")
canvas.pack() 
def draw_line(l):
    "Draw a line with its two end points"
    draw_point(l.p1)
    draw_point(l.p2)
    # now draw the line segment
    x1 = l.p1.x
    y1 = l.p1.y
    x2 = l.p2.x
    y2 = l.p2.y
    id = canvas.create_line(x1, y1, x2, y2, width=2, fill="blue")
    return id

1 个答案:

答案 0 :(得分:3)

这将在画布上为您创建一个网格

import tkinter as tk

def create_grid(event=None):
    w = c.winfo_width() # Get current width of canvas
    h = c.winfo_height() # Get current height of canvas
    c.delete('grid_line') # Will only remove the grid_line

    # Creates all vertical lines at intevals of 100
    for i in range(0, w, 100):
        c.create_line([(i, 0), (i, h)], tag='grid_line')

    # Creates all horizontal lines at intevals of 100
    for i in range(0, h, 100):
        c.create_line([(0, i), (w, i)], tag='grid_line')

root = tk.Tk()

c = tk.Canvas(root, height=1000, width=1000, bg='white')
c.pack(fill=tk.BOTH, expand=True)

c.bind('<Configure>', create_grid)

root.mainloop()