首页 > 解决方案 > 是否可以将数百个按钮动态添加到 tkinter gui?

问题描述

我的目标是使用 Python 创建一个 Tkinter GUI,它基本上是一个巨大的 2d 按钮网格。我已经能够在有限的情况下成功地做到这一点。

到目前为止看起来像这样:

在此处输入图像描述

生成该图像的代码是这样的:

import numpy as np
import tkinter as tk 

def main():
    root = Application()
    root.geometry("900x650")
    root.title("Search algorithm visualizer")
    root.setup()
    root.mainloop()


class Application(tk.Tk):

    def setup(self):
        self.frame = tk.Frame(self)
        self.frame.grid()

        # initialize variables
        self.rows = 20
        self.cols = 20
        self.grid = np.empty(shape=(self.rows, self.cols), dtype=object) # actual grid

        # start functions
        self.setupgrid()


def setupgrid(self):
    for i in range(self.rows):
        for j in range(self.cols):
            button = self.grid[i][j] = tk.Button(self.frame, height=1, width=2, text="")
            button.grid(row=i, column=j)
    

main()

您可能已经注意到,网格尺寸由包含值 20 和 20 的 cols 和 rows 变量决定,这将动态生成 400 个按钮对象。我面临的问题是,如果我将 cols 和 rows 变量设置为高值(例如,100 和 100,这将产生 10,000 个按钮对象),程序将冻结。我希望能够添加大量按钮。

我的问题归结为:

谢谢。

标签: pythontkinterbuttonoptimizationmultidimensional-array

解决方案


推荐阅读