微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在调整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,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 举报,一经查实,本站将立刻删除。