在 Tkinter 中创建二维数组
Create 2d array in Tkinter
我正在 Python 中使用 Tkinter 开发一个新项目。我是 Python 的新手,所以我需要一些帮助。我想创建二维数组并将其显示在 window 中。
这是我的代码:
maze =[[player(), invisblock(), invisblock(), invisblock()],
[invisblock(),invisblock(),invisblock(), invisblock()],
[invisblock(), invisblock(), invisblock(), invisblock()],
[invisblock(), invisblock(), invisblock(), invisblock()], ]
玩家看起来像:
def player():
block = tkinter.Label(window)
block.image = tkinter.PhotoImage(file="down.png")
block['image'] = block.image
block.config(text='karel_down')
return block
打印如下:
def printt():
for i, block_row in enumerate(map):
for j, block in enumerate(block_row):
block.grid(row=i, column=j)
window.update()
window.after(250)
一切正常,但我有一个小问题。
我想再做一个这样的功能(现在还不能用):
def create_world(row,col):
for i in range(row):
for j in range(col):
maze[i][j] = invisblock()
所以我想用 invisblock() create_world 中的行和列填充我所有的迷宫。示例:create_world(10,10) 并将创建迷宫 10x10 invisblock()。我不想像我的第一个代码示例 (maze =[[player()...) 那样手动填充,而是使用一个函数。简而言之,我想创建对象的初始数组 "smarter"。谢谢!!
您可以使用列表理解:
def create_world(row,col):
return [[invisiblock() for i in range(col)] for j in range(row)]
maze = create_world(10, 10)
我正在 Python 中使用 Tkinter 开发一个新项目。我是 Python 的新手,所以我需要一些帮助。我想创建二维数组并将其显示在 window 中。
这是我的代码:
maze =[[player(), invisblock(), invisblock(), invisblock()],
[invisblock(),invisblock(),invisblock(), invisblock()],
[invisblock(), invisblock(), invisblock(), invisblock()],
[invisblock(), invisblock(), invisblock(), invisblock()], ]
玩家看起来像:
def player():
block = tkinter.Label(window)
block.image = tkinter.PhotoImage(file="down.png")
block['image'] = block.image
block.config(text='karel_down')
return block
打印如下:
def printt():
for i, block_row in enumerate(map):
for j, block in enumerate(block_row):
block.grid(row=i, column=j)
window.update()
window.after(250)
一切正常,但我有一个小问题。 我想再做一个这样的功能(现在还不能用):
def create_world(row,col):
for i in range(row):
for j in range(col):
maze[i][j] = invisblock()
所以我想用 invisblock() create_world 中的行和列填充我所有的迷宫。示例:create_world(10,10) 并将创建迷宫 10x10 invisblock()。我不想像我的第一个代码示例 (maze =[[player()...) 那样手动填充,而是使用一个函数。简而言之,我想创建对象的初始数组 "smarter"。谢谢!!
您可以使用列表理解:
def create_world(row,col):
return [[invisiblock() for i in range(col)] for j in range(row)]
maze = create_world(10, 10)