python - 如何为按钮创建行和列?
问题描述
我正在制作我自己的扫雷游戏版本,我需要像在扫雷游戏中一样在 8x8 网格中显示我的按钮。
我已经尝试过使用 'button.pack(side=tk.LEFT)' 但这会将按钮显示为 1 行
对于范围内的 i (64):
button = tk.Button(frame,
text="0",
command=randomnum)
button.pack(side=tk.LEFT)
我认为这会显示到窗口的边缘,但它会离开窗口。
解决方案
包管理器无法处理这样的事情。您可以通过制作一堆框架并单独打包每一列或每一行来做到这一点,但最简单的方法是离开 tkinter 的包管理器并开始使用网格管理器。下面是一个 gui 的一些示例代码,它什么都不做,只显示一个网格:
from tkinter import Tk, Button
class maingui:
def __init__(self, master):
self.master=master
master.title("sample gui")
self.button=Button(text="1")
self.button.grid(row=1, column=1)
self.button=Button(text="2")
self.button.grid(row=1, column=2)
self.button=Button(text="3")
self.button.grid(row=1, column=3)
self.button=Button(text="4")
self.button.grid(row=2, column=1)
self.button=Button(text="5")
self.button.grid(row=2, column=2)
self.button=Button(text="6")
self.button.grid(row=2, column=3)
self.button=Button(text="7")
self.button.grid(row=3, column=1)
self.button=Button(text="8")
self.button.grid(row=3, column=2)
self.button=Button(text="9")
self.button.grid(row=3, column=3)
root = Tk()
gui = maingui(root)
root.mainloop()
如果您希望将按钮添加为循环,您可以执行以下操作:
from tkinter import Tk, Button
class maingui:
def __init__(self, master):
self.master=master
master.title("sample gui")
a=1
b=1
for i in range(1, 65):
self.button=Button(text=i)
self.button.grid(row=a, column=b)
b=b+1
if b==9:
b=1
a=a+1
root = Tk()
gui = maingui(root)
root.mainloop()