我正在用 tkinter 编写一个小游戏,简而言之,我被卡住了。
我有一种奇怪的开始菜单,其中有两个按钮和一个标签。
如果我只是创建框架,一切都很好,它的大小为 500x500 像素
我希望在创建按钮和标签时背景不会改变,但无论我做什么,它都会调整大小。这是我的代码:
import tkinter as tk
def startgame():
pass
mw = tk.Tk() #Here I tried (1)
mw.title('The game')
back = tk.Frame(master=mw, width=500, height=500, bg='black')
back.pack()
go = tk.Button(master=back, text='Start Game', bg='black', fg='red',
command=lambda:startgame()).pack()
close = tk.Button(master=back, text='Quit', bg='black', fg='red',
command=lambda:quit()).pack()
info = tk.Label(master=back, text='Made by me!', bg='red',
fg='black').pack()
mw.mainloop()
我在 stackoverflow 上四处搜索,没有得到任何有用的信息!我发现只有一个问题与我的有点相似,但答案没有用。我试过这个:
(1) mw.resizable(width=False, height=False)
我无法想象问题出在哪里,我真的很绝望。
原文由 Mr. Squiddy 发布,翻译遵循 CC BY-SA 4.0 许可协议
你关闭
pack_propagate
通过设置pack_propagate(0)
关闭
pack_propagate
这里基本上是说不要让框架内的小部件控制它的大小。所以你已经将它的宽度和高度设置为 500。关闭 propagate stills 允许它是这个大小,而小部件不会改变框架的大小来填充它们各自的宽度/高度,这是正常情况下会发生的要关闭调整根窗口的大小,您可以设置
root.resizable(0, 0)
,其中允许在x
和y
方向调整大小要将最大尺寸设置为窗口,如其他答案中所述,您可以设置
maxsize
属性或minsize
尽管您可以只设置根窗口的几何形状,然后关闭调整大小。 imo 更灵活一点。每当您在小部件上设置
grid
或pack
时,它将返回None
。因此,如果您希望能够保留对小部件对象的引用,则不应在调用grid
或pack
的小部件上设置变量。您应该将变量设置为小部件Widget(master, ....)
然后在小部件上调用pack
或grid
。