请帮助修复代码
import tkinter
def makeWorkArea(parent):
WorkArea = tkinter.Frame(parent)
WorkArea.config(relief = 'sunken', width = 340, height = 170, bg = 'red')
WorkArea.pack(expand = 'yes', fill = 'both')
msg = tkinter.Label(WorkArea, text='Window menu basics')
msg.pack()
root = tkinter.Tk()
makeWorkArea(root)
root.mainloop()
问题是参数是特定尺寸的包装工区域WorkArea,但由于某种原因启动程序后,一个窗口较小(大约等于字母msg的大小)。是否有可能在发布后创建一个340x170像素的窗口,沐浴在红色。并放在窗口文本msg?
答案 0 :(得分:1)
我相信您需要tkinter.Tk.geometry
方法:
import tkinter
def makeWorkArea(parent):
WorkArea = tkinter.Frame(parent)
WorkArea.config(relief = 'sunken', width = 340, height = 170, bg = 'red')
WorkArea.pack(expand = 'yes', fill = 'both')
msg = tkinter.Label(WorkArea, text='Window menu basics')
msg.pack()
root = tkinter.Tk()
###########################
root.geometry("340x170")
###########################
makeWorkArea(root)
root.mainloop()
评论框中的行将窗口的初始大小设置为340x170
像素。
答案 1 :(得分:0)
默认情况下,grid
和pack
几何体管理器会执行所谓的“几何体传播”。这是一个奇特的名称,说框架和窗口缩小或扩展,以适应其内容。这几乎总是你想要的。
如果要使框架具有特定尺寸,最佳解决方案是关闭几何体传播。执行此操作时,窗口小部件将遵循width
和height
属性,并忽略任何子窗口小部件的大小。
请参阅以下代码中的最后一行:
def makeWorkArea(parent):
WorkArea = tkinter.Frame(parent)
WorkArea.config(relief = 'sunken', width = 340, height = 170, bg = 'red')
WorkArea.pack(expand = 'yes', fill = 'both')
WorkArea.pack_propagate(False)
请注意,关闭传播通常是code smell。这通常意味着你做错了什么。 Tkinter非常擅长制作尺寸合适的小部件。通过关闭此功能,您完全有责任使小部件具有适当的大小,这在面对不同的屏幕分辨率,不同的字体以及用户调整窗口大小时可能很难。