用户界面- Tkinter画布没有正确调整大小



我正在尝试创建一个游戏板,可以自动调整大小,因为用户调整窗口的大小。我决定使用多个画布(计划将它们存储在字典中),而不是在单个画布上绘制矩形,因为我认为它会更容易和更好看。然而,我似乎不能正确地调整板的大小。下面是函数:

def __init__(self):
    self._root_window = tkinter.Tk()
    self._cols = 4
    self._rows = 4
    for row in range(self._rows):
        for col in range(self._cols):
            self._canvas = tkinter.Canvas(
                master = self._root_window, width = 50, height = 50, borderwidth = 0,
                highlightthickness = .5, background = '#C49B52',
                highlightbackground = 'black')
            self._canvas.grid(
                row = row, column = col, padx = 0, pady = 0,
                sticky = tkinter.N + tkinter.E + tkinter.S + tkinter.W)
            self._root_window.rowconfigure(0, weight = 1)
            self._root_window.columnconfigure(0, weight = 1)
def start(self) -> None:
    self._root_window.mainloop()

当我尝试调整窗口大小时,会发生以下情况:

http://vvcap.net/db/ZU7nvbjtGoDKpIyRXjVs.htp

我尝试使用self._root_window.bind('<Configure>', self._resize)并通过该重新打印板,但这是结果(当我尝试拉伸它时它也崩溃了):

http://vvcap.net/db/HqWzkb9_rVYfckPIuiRR.htp

我怎样才能正确调整板的大小?

您需要给每一行和每一列一个权重,它描述了当它的容器增长或收缩时该行或列将如何增长或收缩。默认情况下,每行和列的权重为0(零)。在这种情况下,tkinter将选择堆叠顺序中最高的小部件来增长或缩小,这就是左上角小部件增长的原因。其余的行和列只扩展到足以容纳左上角的画布。

在大的for循环之后添加以下代码:

for row in range(self._rows):
    for col in range(self._cols):
        ...
for row in range(self._rows):
    self._root_window.grid_rowconfigure(row, weight=1)
for col in range(self._cols):
    self._root_window.grid_columnconfigure(col, weight=1)

相关内容

  • 没有找到相关文章

最新更新