如何使用tkinter自定义框架

时间:2017-05-25 15:05:08

标签: python tkinter

我试着理解tkinter是如何工作的。我有这个简单的程序:

import tkinter as tk

class Application:
    def __init__(self, master):
        frame = tk.Frame(master, height=100, width=500, bg="#FFFFFF", bd=10)
        frame.grid()
        self.button = tk.Button(frame, text="QUIT", fg="red", command=frame.quit)
        self.button.grid()

root = tk.Tk()
app=Application(root)
root.mainloop()

当我运行程序时,我得到一个窗口,但我为框架指定的选项(高度,宽度......)不起作用。我的错误在哪里?谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

Tkinter小部件旨在“缩小”以适应"他们的孩子小部件。如果您的目标是编写一个响应字体,分辨率和大小变化的GUI,那么这几乎总是您想要的。换句话说,你没有犯错,tkinter的行为完全符合设计行为。

虽然有办法强制窗口达到特定大小,但我强烈建议不要这样做。如果您专注于使内部小部件的大小合适,那么您的框架和主窗口将全部智能地调整大小以确保一切都适合。你应该几乎不需要为任何东西提供明确的像素大小(除了帆布之外)。

答案 1 :(得分:-1)

您需要将grid_propagate设置为零。这会使帧停止调整大小到按钮的大小。

frame.grid()之后,添加frame.grid_propagate(0)

import tkinter as tk

class Application:
    def __init__(self, master):
        frame = tk.Frame(master, height=100, width=500, bg="#FFFFFF", bd=10)
        frame.grid()
        frame.grid_propagate(0)
        self.button = tk.Button(frame, text="QUIT", fg="red", command=frame.quit)
        self.button.grid()

root = tk.Tk()
app=Application(root)
root.mainloop()
相关问题