如何根据表格(列表列表)在tkinter画布上绘制方格表?

时间:2016-10-01 12:22:04

标签: python list canvas tkinter tkinter-canvas

它又是我:) 我继续我的游戏项目。我在这件事上陷入困境(作为我的初学者): 我有一个表(4个列表,每个列表包含4个元素。虽然长度很灵活,但这只是问题的一个简单示例)。 所以这是我的代码:

from tkinter import*
l=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
n=len(l)    #this is the length of the list l
lngt=400/len(l)    #this is the dimension of the squares that I want
fen=Tk()
fen.geometry("600x400")

#I would like to create a table of 4 rows on canvas
#each row should contain 4 squares
can=Canvas(fen,width=450,height=400,bg="lightblue")
can.pack(side=LEFT)
for i in range(n):
  can.create_rectangle(n,  i*(lngt)  ,n+lngt,  i*n+(i+1)*lngt,     fill="red")

f=Frame(fen,width=150,height=400,bg="lightcoral")
f.pack(side=LEFT)

fen.mainloop()

截至目前,我只在画布的左侧获得了一个4列的列。我的所有试验都未能创造出其他12个方格。

谢谢你真棒的人!!

1 个答案:

答案 0 :(得分:1)

以下是如何在画布上绘制方形正方形网格。

import tkinter as tk

l = [[0,0,0,0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
n = len(l)      #this is the length of the list l
lngt = 400 // n #this is the dimension of the squares that I want

fen = tk.Tk()
fen.geometry("600x400")

#I would like to create a table of 4 rows on canvas
#each row should contain 4 squares
can = tk.Canvas(fen, width=450, height=400, bg="lightblue")
can.pack(side=tk.LEFT)

for i in range(n):
    y = i * lngt
    for j in range(n):
        x = j * lngt
        can.create_rectangle(x, y, x+lngt, y+lngt, fill="red")

f = tk.Frame(fen, width=150, height=400, bg="lightcoral")
f.pack(side=tk.LEFT)

fen.mainloop()