我正在尝试用Python和tkinter创建一个战舰游戏。 我需要声明100个按钮(一个玩家可以发射的每个点对应一个),我发现我可以这样做,将它们放在一个10x10的网格中,同时还可以用变量button-dict存储对它们的引用
from tkinter import *
from tkinter import ttk
root = Tk()
board_frame = ttk.Frame(root, padding=5)
board_frame.grid(column=0,row=0)
COORDS_LIST = []
buttons_dict = {}
for r in range(1,11):
for c in range(1,11):
coord = str(r)+"_"+str(c)
COORDS_LIST.append(coord)
buttons_dict[COORDS_LIST[-1]] = ttk.Button(board_frame, text="O", width="2")
buttons_dict[COORDS_LIST[-1]].grid(row=r,column=c)
root.mainloop()
这个代码创建了100个按钮,完全按照我的需要显示。当我想给他们每个人一个命令时,问题就开始了。我想要的是一个通用函数(对于这个问题,我们可以称之为“fire_here”),每次按下其中一个按钮时都会调用它,但我需要传递1个或2个参数: 它可以是创建该按钮时附加到“坐标”列表的值,也可以是按钮的“列”和“行”值。 那么,我该怎么做呢?或者,一旦一个按钮被放置了,我如何得到它的行/列??在
我想你想要这样的东西:
我添加的所有内容都在评论框中。然而,重要的是:
^{pr2}$基本上,它做两件事:
使用^{} ,它为当前按钮的
command
选项创建一个函数。此函数将在单击按钮时调用。它接受当前的列和行(按钮在网格上的坐标)并将它们设置为函数的
x
和y
参数的默认值。此外,当函数被调用时,这些值将被发送到fire_here
进行处理。同样,你可以把它写在上面的行上,如下所示:
不过,我把它放在自己的行中以提高代码的清晰度。在
相关问题 更多 >
编程相关推荐