如何设置框架的最小和最大高度或宽度?

发布于 2021-01-29 17:47:10

Tkinter窗口的大小可以通过以下方法控制:

.minsize()
.maxsize()
.resizable()

是否有等效的方法来控制Tkinter或ttk帧的大小?

@Bryan:我将您的frame1.pack代码更改为以下代码:

frame1.pack(fill='both', expand=True)
frame1.bind( '<Configure>', maxsize )

我添加了此事件处理程序:

# attempt to prevent frame from growing past a certain size
def maxsize( event=None ):
    print frame1.winfo_width()
    if frame1.winfo_width() > 200:
        print 'frame1 wider than 200 pixels'
        frame1.pack_propagate(0)
        frame1.config( width=200 )
        return 'break'

上面的事件处理程序检测到帧的宽度太大,但是无法防止大小增加。这是Tkinter的限制,还是我误解了您的解释?

关注者
0
被浏览
221
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    没有单个魔术功能可以将帧强制为最小或固定大小。但是,您可以通过为框架指定宽度和高度来强制框架的大小。然后,您可能还需要做两件事:将窗口放置在容器中时,需要确保几何管理器不会收缩或扩展窗口。第二,如果框架是其他小部件的容器,请关闭网格或包的传播,以使框架不会收缩或扩展以适合其自身的内容。

    但是请注意,这不会阻止您将窗口的大小调整为小于内部框架。在这种情况下,框架将被剪切。

    import Tkinter as tk
    
    root = tk.Tk()
    frame1 = tk.Frame(root, width=100, height=100, background="bisque")
    frame2 = tk.Frame(root, width=50, height = 50, background="#b22222")
    
    frame1.pack(fill=None, expand=False)
    frame2.place(relx=.5, rely=.5, anchor="c")
    
    root.mainloop()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看