如何解决如何避免调整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,width=100)
f3 = tk.Frame(root,background="red",width=100)
f4 = tk.Frame(root,background="white",width=100)
f1.grid(row=0,column=0,sticky="nsew")
f2.grid(row=0,column=1,sticky="nsew")
f3.grid(row=1,sticky="nsew")
f4.grid(row=1,sticky="nsew")
root.mainloop()
解决方法
据我了解,您想要:
- 列 0 -保持其宽度
- 行 0 -保持高度。
但是您的代码集配置是每次调整大小的一种方式:
- 大小增加的1/5将“赋给”列 0 ,
- 大小增加的4/5将“赋予”列 1 ,
- 行相同。
使用 grid 的正确解决方案是:
- 为列和行 0 保留默认权重 0 ,
- 指定列和行 1 的任何正宽度。
因此将代码的相应部分更改为:
root.grid_columnconfigure(1,weight=1)
root.grid_rowconfigure(1,weight=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,expand=True,fill=tk.BOTH)
f2.pack(anchor=tk.N,side=tk.TOP,fill=tk.BOTH)
root.mainloop()
几何管理器来获得所需的可调整大小的窗口几何:
{{1}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。