问题描述
您好,我正在尝试创建一个游戏,您单击一个按钮,它会告诉您它是宝还是土匪。 如果它是宝藏,那么如果它是土匪,则您将获得积分。 我已经创建了以下代码,但是无法找到一种方法来确定是否已将按钮设置为存储在数组中的值。 如何使用数组中的数据,以及单击按钮时,它将告诉您该值是什么。 如果我正确地做阵列,任何帮助将不胜感激。
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()
1楼
这可能就是您想要做的。
从借用信息,我在Button命令中添加了以传递行号和列号。
另外,“ B”和“ T”被附加到每个0
数组中,而不是分配给数组中的位置,这就是我想要的。
我进行了其他一些更改,包括将for
循环从0
(第一行)开始固定,等等。
# previous code
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]]
# ... all code up to here unchanged ...
for _ in range(4):
my_array[random.randrange(len(my_array))][random.randrange(len(my_array))] = amount_to_add
Treasure='T'
for _ in range(4):
my_array[random.randrange(len(my_array))][random.randrange(len(my_array))] = Treasure
# print my_array # uncomment to check array values before shuffle
random.shuffle(my_array)
# print my_array # and after shuffle to confirm button is getting the correct values
def changelabel(j,k):
tkinter.messagebox.showinfo('Button %d,%d' % (j,k), 'Button %d,%d contains a %s' % (j,k, my_array[j][k]))
print('hello this button works')
# return # not needed
i = 0
bttn = []
for j in range(0,8):
for k in range(8):
bttn.append(Button(TreasureMap, text = ' ', command= lambda row = j, column = k: changelabel(row, column)))
bttn[i].grid(row = j, column = k)
i += 1
如果这不符合您的要求,请随时发表评论或提出问题。 否则,希望对您有所帮助。