Создать 2d массив в Tkinter - PullRequest
0 голосов
/ 22 марта 2019

Я просто работаю над новым проектом на Python с Tkinter.Я новичок в 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()

Поэтому я хочу заполнить весь свой лабиринт строкой и столбцом из create_world с помощью invisblock ().Пример: create_world (10,10) и создаст лабиринт 10x10 invisblock ().Я не хочу заполнять вручную, как в моем первом примере кода (maze = [[player () ...), но с помощью функции).Короче говоря, я хочу создать исходный массив объектов «умнее».Спасибо !!

1 Ответ

2 голосов
/ 22 марта 2019

Вы можете использовать списки:

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

maze = create_world(10, 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...