2013-10-08 95 views
0

如果我有几个创建包含'#','','X'和'O'的网格的列表的列表,我怎么能用Tkinter库来表示它们是不同颜色的在画布上的正方形?用Tkinter canvas创建形状

我可以为其中一个列表静态地执行此操作,但我不确定如何使其成为动态的,以便我可以加载每个列表。

这是我想创建它在画布上:

self._canvas = Canvas(root, relief=SUNKEN, bg="black", width=300, height=300) 
self._canvas.pack(side=TOP, expand=True, fill=BOTH) 

回答

2

我不能确定你的问题是什么,但你可以只遍历网格是这样的:

DICT_COLOR = {'#':'red', 'X':'green', 'O':'yellow'} 
SIZE_X = 300/len(grid[0]) 
SIZE_Y = 300/len(grid) 
for i, line in enumerate(grid): 
    for j, value in enumerate(line): 
     self._canvas.create_rectangle(j*SIZE_X, 
             i*SIZE_Y, 
             (j+1)*SIZE_X, 
             (i+1)*SIZE_Y, 
             fill=DICT_COLOR[value]) 
+0

我我试图打开一个包含这些字符的文本文件,将它们转换为列表,如[['#','#'],['X','#'],['','O'] ]并将其显示为画布上的网格。 – user2330621

+0

所以你的问题是如何从文本文件中获取列表的列表?如果是这样,你能提供一个这样的文件的例子吗? – Yoann

+0

我的问题是如何获取呈现在画布上的列表清单。我有麻烦,因为画布是在一个类(gui)中定义的,而在另一个类中则是列表。 – user2330621