首页 > 解决方案 > 如何在调整 tkinter 窗口大小时避免列或行大小?

问题描述

我在调整 tkinter 中的列和行框架的大小时遇到​​问题。 在此处输入图像描述

我以 1:4 的比例划分了列和行。在调整窗口大小时,它会保持比例,但我想避免调整黑色和红色框架的大小。所以基本上,当我调整大小时,黑色和红色框架不应该增长或收缩,但所有变化都发生在白色窗口中。我怎样才能做到这一点?

代码 -

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
root.wm_geometry("1200x700")

root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=4)
root.grid_rowconfigure(0, weight=1)
root.grid_rowconfigure(1, weight=4)

f1 = tk.Frame(root, background="black", height=100, width=100)
f2 = tk.Frame(root, background="black", height=100, width=100)
f3 = tk.Frame(root, background="red", height=100, width=100)
f4 = tk.Frame(root, background="white", height=100, width=100)

f1.grid(row=0, column=0, sticky="nsew")
f2.grid(row=0, column=1, sticky="nsew")
f3.grid(row=1, column=0, sticky="nsew")
f4.grid(row=1, column=1, sticky="nsew")

root.mainloop()

标签: pythontkintertkinter-layout

解决方案


据我了解,您想要:

  • 第0列- 保持其宽度,
  • 第0行- 保持其高度。

但是您的代码集配置是这样一种方式,即在每次调整大小时:

  • 大小增加的 1/5 将“给予”第0列,
  • 大小增加的 4/5 将“给予”第 1列,
  • 行也是一样。

使用grid的正确解决方案是:

  • 为第0列和第 0 行保留默认权重0
  • 为第 1 列和第1行指定任何正宽度。

因此,将代码的相应部分更改为:

root.grid_columnconfigure(1, weight=1)
root.grid_rowconfigure(1, weight=1)

推荐阅读