如何避免调整tkinter窗口大小时的列或行大小?

时间:2020-11-02 07:43:15

标签: python tkinter tkinter-layout

我在调整tkinter中的列和行框架时遇到麻烦。 enter image description here

我已按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()

2 个答案:

答案 0 :(得分:2)

据我了解,您想要:

  • 0 -保持其宽度
  • 0 -保持高度。

但是您的代码集配置是每次调整大小的一种方式:

  • 大小增加的1/5将“赋给”列 0
  • 大小增加的4/5将“赋予”列 1
  • 行相同。

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

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

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

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

答案 1 :(得分:1)

您可以使用import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() root.wm_geometry("1200x700") f1 = tk.Frame(root, bg="black", height=100) f1.pack(anchor=tk.N, fill=tk.X) f2 = tk.Frame(root) f3 = tk.Frame(f2, bg="red", width=100) f3.pack(anchor=tk.NW, side=tk.LEFT, fill=tk.Y) f4 = tk.Frame(f2, bg="blue", width=100, height=100) f4.pack(anchor=tk.NW, side=tk.LEFT, expand=True, fill=tk.BOTH) f2.pack(anchor=tk.N, side=tk.TOP, expand=True, fill=tk.BOTH) root.mainloop() 几何管理器来获得所需的可调整大小的窗口几何:

{{1}}