我使用Python和Tkinter创建游戏,我尝试使用不同的"屏幕" (目前为止的主菜单和级别编辑器),每个都是MyDataFrame$as.name(mylist[1])
对象,在主菜单屏幕的类定义中tkinter.Frame
),在ScreenMainMenu
,第11行,我尝试使用__init__
来更改"主菜单的宽度,高度和背景颜色" self.config()
。但是当我运行此代码时,背景仍然是灰色的。我猜测我错过了一些明显的东西(我对Tkinter和类仍然相当新)。非常感谢任何帮助 - 谢谢。
tkinter.Frame
答案 0 :(得分:0)
在Tkinter中,通常所有小部件都会调整其大小以适合内容。这意味着,您的框架实际上是红色(或其他),它只适合其内容。 (您可以检查它注释掉self.create_widgets()方法。)您可以使用.grid_propagate()方法强制大小,并将0作为参数传递:
class ScreenMainMenu(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
parent.parent.geometry("{}x{}".format(WIDTH["MainMenu"], HEIGHT["MainMenu"]))
parent.config(width=WIDTH["MainMenu"], height=HEIGHT["MainMenu"])
self.config(width=WIDTH["MainMenu"], height=HEIGHT["MainMenu"], background="red")
self.grid()
self.create_widgets()
self.grid_propagate(0) # force the widget to a certain size
BTW,您可以使用super()初始化父级:
super().__init__(parent) # yes, without self!