Tkinter,在GUI网格中显示列表元素

时间:2017-04-22 12:58:31

标签: python-3.x tkinter grid

编辑已解决

我正在尝试制作2048游戏,游戏分为2个模块。一个有规则,另一个是在tkinter。 我的列表在模块内,其中包含规则。所以我想知道是否还要在我的tkinter网格列表中显示数字。 This is how it looks like now.我成功地填充了数字产生的区域,但我不知道如何显示它们。谢谢你的帮助。

This is what I'm trying to get. (picture edited)

这是创建网格的功能。

def init(n):
    base=[2,4]
    creation= grid(n, 0) #create grid with value 0
    ran1, ran2= base[randrange(0,2)], base[randrange(0,2)]
    addrandom(creation,ran1) ##spawn either a 2 or a 4
    addrandom(creation,ran2) ##spawn either a 2 or a 4
    return creation

结果看起来像这样。

  0      2      2      0
  0      0      0      0
  0      0      0      0
  0      0      0      0

Tkinter看起来像这样:

def drawg_grid(g):     
    can.delete(ALL) #can is the canvas
    for i in range(n+1):
        can.create_line(x0+c*i, y0,x0+c*i,y0 + n*c,fill="#92877d")
        can.create_line(x0, y0+c*i,x0+n*c ,y0+c*i,fill="#92877d")

def square(g):   
     for i in range(n):
        for j in range(n):
            x=g[i][j]
            if x!=0:
                can.create_rectangle(x0 +c*j+2,y0+c*i+2,x0 +c*(j+1)-2,y0+c*(i+1)-2, fill= dico_couleurs_case.get(x), outline= dico_couleurs_case.get(x)) #premade dictionary to get the background color 

1 个答案:

答案 0 :(得分:1)

如果有人在想,那就是我做的。

def square(g):   
     for i in range(n):
            for j in range(n):
            x=g[i][j]
            if x!=0:
                can.create_rectangle(x0 +c*j+2,y0+c*i+2,x0 +c*(j+1)-2,y0+c*(i+1)-2, fill= dico_couleurs_case.get(x), outline= dico_couleurs_case.get(x))
                can.create_text((x0 +c*j+38,y0+c*i+38), text= x, font=("Ubuntu",28,"bold"), fill= dico_couleurs_chiffre.get(x))