当前位置: 首页 > 知识库问答 >
问题:

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

潘慈
2023-03-14

我把列和行按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个答案

元昊苍
2023-03-14

您可以使用packgeometry manager获得所需的可调整大小的窗口几何图形:

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()
司空丰
2023-03-14

据我所知,你想要:

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

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

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

使用网格的正确解决方案是:

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

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

root.grid_columnconfigure(1, weight=1)
root.grid_rowconfigure(1, weight=1)
 类似资料:
  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 问题内容: 我有一个程序,该程序创建一个窗口,其中根据复选框显示一条消息。 显示消息而不显示消息时,如何使窗口大小恒定? 问题答案: 此代码使窗口具有用户无法更改窗口尺寸的条件,并且还禁用了最大化按钮。 在程序中,您可以使用@Carpetsmoker的答案或通过以下方式更改窗口尺寸: 将其实现到代码中应该很容易。:)

  • 我有一个窗口与列表框,调整大小与彼此。我用网格来做这个。列表框下面有一排按钮,它们当前正在随着窗口移动和调整大小。我希望按钮保持原位,并在窗口和列表框调整大小时保持一致的大小(所以按钮总是保持在列表框的左下角)。 有简单的方法吗?我今天才开始使用Tkinter,所以我可能只是在文档中错过了它,或者可能只是在网格布局上感到困惑。 按钮设置如下: 我已经尝试了所有粘性组合,但那些不调整按钮大小的组合仍

  • 在tkinter中调整窗口大小时,有没有办法动态调整小部件的大小? 这是代码: 当我调整窗口大小时,窗口小部件的宽度和高度保持不变。 我想要的是根据窗口的大小动态调整窗口小部件的大小。 有没有办法在tkinter中实现这一点? 如果有人能帮我,那就太好了。

  • 窗口大小,我们可以非常方便的使用width、height调整,但是如何知道 width和height是一个问题? 在 Window 操作系统中,假如我们想要缩放,我们通常会把鼠标移动到窗口的右边栏,和底部边栏,以及右下边栏。 而且在不同的边栏,鼠标呈现的样式也是不一样的。当我们在右边栏的时候我们可以通过cursor: e-resize;模拟鼠标样式。 在底部边栏我们可以通过cursor: s-re

  • #include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = j