在Tkinter中创建2d数组

问题描述 投票:0回答:1

我正在使用Tkinter在Python上开发一个新项目。我是Python的新手,所以我需要一些帮助。我想创建2D数组并在窗口中显示它。

这是我的代码:

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填充我的迷宫中的row和col。示例:create_world(10,10)并将创建迷宫10x10 invisblock()。我不想像我的第一个代码示例(迷宫= [[player()...)手动填充,而是使用函数。简而言之,我想创建初始的对象数组“更聪明”。谢谢!!

python arrays tkinter 2d
1个回答
2
投票

您可以使用列表推导:

def create_world(row,col):
    return [[invisiblock() for i in range(col)] for j in range(row)] 

maze = create_world(10, 10)
© www.soinside.com 2019 - 2024. All rights reserved.