python - 如何在调整 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()
解决方案
据我了解,您想要:
- 第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)
推荐阅读
- java - 一次只播放一个音频文件?
- javascript - Vue Typescript Konva。Canvas onClick 抛出“未捕获的语法错误:函数语句需要函数名”
- javascript - 找不到模块“节点”
- apache-flink - Flink 检查点/保存点类变量吗?
- android - ArCore - 添加带有纹理的对象
- maven - 如何在部署期间查看 Maven 向服务器发送的内容?
- python - 无法在 Windows 上运行的 pyCharm 中安装密码学和 pynacl 库
- python - 有没有一种惯用的 panda 方法可以从代表开始和停止信号的 2 个列表中获取索引
- javascript - 事件方法上的jQuery不会触发
- makefile - 仅忽略来自 GNU make 的先决条件构建输出