无法更改Tkinter中Frame小部件的背景颜色?

时间:2017-06-29 19:29:56

标签: python python-3.x tkinter

我使用Python和Tkinter创建游戏,我尝试使用不同的"屏幕" (目前为止的主菜单和级别编辑器),每个都是MyDataFrame$as.name(mylist[1]) 对象,在主菜单屏幕的类定义中tkinter.Frame),在ScreenMainMenu,第11行,我尝试使用__init__来更改"主菜单的宽度,高度和背景颜色" self.config()。但是当我运行此代码时,背景仍然是灰色的。我猜测我错过了一些明显的东西(我对Tkinter和类仍然相当新)。非常感谢任何帮助 - 谢谢。

tkinter.Frame

1 个答案:

答案 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!