Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为按钮创建行和列?_Python_Tkinter - Fatal编程技术网

Python 如何为按钮创建行和列?

Python 如何为按钮创建行和列?,python,tkinter,Python,Tkinter,我正在制作我自己版本的“扫雷舰”,我需要像“扫雷舰”一样在8x8网格中显示我的按钮 我已经尝试过使用“button.pack(side=tk.LEFT)”,但这会将按钮显示为一行 对于范围(64)内的i: 我原以为这会显示到窗口的边缘,但它会显示在窗口的边缘。包管理器无法处理类似的事情。您可以通过制作一组框架并单独打包每一列或每一行来实现这一点,但最简单的方法是离开tkinter的打包管理器,开始使用网格管理器来实现这一点。下面是gui的一些示例代码,它不做任何事情,但向您显示一个网格: fro

我正在制作我自己版本的“扫雷舰”,我需要像“扫雷舰”一样在8x8网格中显示我的按钮

我已经尝试过使用“button.pack(side=tk.LEFT)”,但这会将按钮显示为一行

对于范围(64)内的i:


我原以为这会显示到窗口的边缘,但它会显示在窗口的边缘。

包管理器无法处理类似的事情。您可以通过制作一组框架并单独打包每一列或每一行来实现这一点,但最简单的方法是离开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()

除非使用一组帧,否则
几何体对此不起作用。检查
tkinter
文档,了解
网格
几何图形的信息。这里有几个小教程,让你开始学习。谢谢你,但是我正在为如何在我的代码中实现它而努力。我刚刚包括了在for循环中创建的64按钮网格的完整代码。很明显,按钮上没有函数或任何东西,我只是将它们命名为数字,但这段代码将为您提供一个8x8网格。所有内容缩进是否正确?如果按钮未作为
\uuuuu init\uuuuu
的一部分包含,则会出现该错误。确保其缩进与上面的缩进完全相同。我刚刚又测试了一次。真管用,太棒了。如果此答案解决了您的问题,如果不太麻烦,请选择“已接受”。一般来说,当你将来提出问题时,通常的好做法是接受你最终使用的问题,这既可以帮助未来的问题观众,也可以提高回答者的声誉。
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()