Здравствуйте, я пытаюсь создать игру, в которой вы нажимаете кнопку, и она сообщает вам, является ли это сокровищем или бандитом. Если это сокровище, тогда вы получаете очки, если это бандит, вы теряете свои монеты. Я создал следующий код, но не могу найти способ узнать, удалось ли мне установить кнопки в значения, хранящиеся в массиве. Как вы используете данные в массиве и когда нажимаете кнопку, он сообщает вам, что это за значение. Я делаю массив правильно, любая помощь будет оценена. Я собираюсь кругами и не могу думать прямо сейчас.Проблемы с присвоением значения из случайно заполненного массива кнопке tkinter
from tkinter import *
import tkinter.messagebox
import random
#count=0
root = Tk()
TreasureMap = Frame(root)
TreasureMap.grid()
root.title("TreasureMap")
text_box = Entry(TreasureMap, justify=RIGHT)
text_box.grid(row = 0, column = 0, columnspan = 8,)
text_box.insert(0, "0")
amount_to_add='B'
my_array = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]]
my_array[random.randrange(len(my_array))].append(amount_to_add)
my_array[random.randrange(len(my_array))].append(amount_to_add)
my_array[random.randrange(len(my_array))].append(amount_to_add)
my_array[random.randrange(len(my_array))].append(amount_to_add)
Treasure='T'
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
my_array[random.randrange(len(my_array))].append(Treasure)
print(my_array)
def changelabel(): `
tkinter.messagebox.showinfo('Hellow this button works') ``
print('hello this button works') ` ``
print(my_array) `` ``
return
i = 0
bttn = []
for j in range(1,9):`
for k in range(8): ``
bttn.append(Button(TreasureMap, text = ' ', value=random.shuffle
(my_array),command=changelabel))
bttn[i].grid(row = j, column = k)
i += 1 ``
TreasureMap.mainloop()
Что делает команда = лямбда row = j, column = k: changelabel (строка, столбец) делать в этом коде ?? Команда –
- это аргумент, переданный кнопке так же, как вы ее использовали. Однако мы также хотим включить в «changelabel» параметры, чтобы узнать, какую строку/столбец вызывала кнопка. [Обратный вызов может быть функцией, связанным методом или любым другим вызываемым объектом Python] (http://effbot.org/tkinterbook/button.htm#Tkinter.Button.config-method), здесь 'changelabel' * - это функция * и [lambda] (http://www.secnetix.de/olli/Python/lambda_functions.hawk) присваивает 'j' и' k' во время выполнения в качестве параметров для перехода на 'changelabel' – davedwards