我正在制作我自己版本的扫雷舰,我需要在8x8网格上显示我的按钮,就像在扫雷舰中一样。
我已经尝试过使用“button.pack(side=tk.LEFT)”,但这会将按钮显示为1行
I在范围内(64):
button = tk.Button(frame,
text="0",
command=randomnum)
button.pack(side=tk.LEFT)我以为这个会显示到窗口的边缘,但是它会显示在窗口上。
发布于 2018-12-19 18:42:33
包装经理处理不了这样的事情。您可以通过将每一列或每一行分别打包成一组帧来完成,但最简单的方法是从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()

https://stackoverflow.com/questions/53857131
复制相似问题