我试着理解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()
当我运行程序时,我得到一个窗口,但我为框架指定的选项(高度,宽度......)不起作用。我的错误在哪里?谢谢你的帮助。
答案 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()