Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter帧:更改其内容时固定帧高度_Python_Python 3.x_Tkinter_Widget_Tk - Fatal编程技术网

Python tkinter帧:更改其内容时固定帧高度

Python tkinter帧:更改其内容时固定帧高度,python,python-3.x,tkinter,widget,tk,Python,Python 3.x,Tkinter,Widget,Tk,我正在开发一个带有适当GUI的自编模拟工具。通常有两种主要的用户模式。在第一种方法中,用户可以为所需的计算输入多个值。完成所有计算后,用户可以通过单击右下角的“显示结果”按钮切换到“结果模式”。通过这样做,GUI上部带有图像的主窗口不会改变。但是,GUI下部的先前输入项应更改为消息区域,在该区域中显示错误、警告或其他信息(持续时间、收敛性等) 我能够使两种GUI模式都可切换,但较低帧(称为lowerframe)的帧高度发生了变化,这看起来非常难看 我认为所描述的行为是框架内容高度不同的结果。在第

我正在开发一个带有适当GUI的自编模拟工具。通常有两种主要的用户模式。在第一种方法中,用户可以为所需的计算输入多个值。完成所有计算后,用户可以通过单击右下角的“显示结果”按钮切换到“结果模式”。通过这样做,GUI上部带有图像的主窗口不会改变。但是,GUI下部的先前输入项应更改为消息区域,在该区域中显示错误、警告或其他信息(持续时间、收敛性等)

我能够使两种GUI模式都可切换,但较低帧(称为
lowerframe
)的帧高度发生了变化,这看起来非常难看

我认为所描述的行为是框架内容高度不同的结果。在第一种模式中,有几个
条目
小部件,而在第二种模式中,只有一个小
标签
小部件包含
foo

如何防止框架的高度动态变化?换句话说:有没有办法固定
下机架的高度

我指定了
height=200
(以及GUI右下角的
btnframe
),这似乎没有任何效果,因为包含
foo
-标签小部件的框架肯定比那些200 px小

---MWE---

---测试图像--

就是你要找的

在设置框架的高度和宽度后,若禁用传播,则无论框架中有多少小部件,其大小都将相同

例如,我写了一些代码。尽管它看起来很难看,但它显示了传播的工作原理

import tkinter as tk

root = tk.Tk()
root.geometry("500x300")

def add():
    tk.Entry(frame).grid()

def disable():
    frame.configure(height=frame["height"],width=frame["width"])
    frame.grid_propagate(0)

def enable():
    frame.grid_propagate(1)

frame = tk.Frame(root, height=100,width=150,bg="black")
frame.grid(row=1,column=0)

tk.Button(root, text="add widget", command=add).grid(row=0,column=0)
tk.Button(root, text="disable propagation", command=disable).grid(row=0,column=1)
tk.Button(root, text="enable propagation", command=enable).grid(row=0,column=2)
import tkinter as tk

root = tk.Tk()
root.geometry("500x300")

def add():
    tk.Entry(frame).grid()

def disable():
    frame.configure(height=frame["height"],width=frame["width"])
    frame.grid_propagate(0)

def enable():
    frame.grid_propagate(1)

frame = tk.Frame(root, height=100,width=150,bg="black")
frame.grid(row=1,column=0)

tk.Button(root, text="add widget", command=add).grid(row=0,column=0)
tk.Button(root, text="disable propagation", command=disable).grid(row=0,column=1)
tk.Button(root, text="enable propagation", command=enable).grid(row=0,column=2)