我正在使用Python和Tkinter来创建一个游戏,我正在尝试使用不同的“屏幕”(主菜单和到目前为止的关卡编辑器),每个屏幕都是Tkinter。Frame
对象,在主菜单屏幕(ScreenMainMenu
)的类定义中,在第11行的\uuuu init\uuuuuu
中,我试图使用self。config()
以更改“主菜单”的宽度、高度和背景色。帧。但当我运行这段代码时,背景仍然是灰色的。我猜我错过了一些明显的东西(我对Tkinter和类还是相当陌生)。任何帮助都将不胜感激——谢谢。
import tkinter as tk
WIDTH = {"MainMenu": 600, "Editor": 450}
HEIGHT = {"MainMenu": 500, "Editor": 501}
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()
def create_widgets(self):
# self.logo = tk.Label(self, image=r"res\logo.png")
self.logo = tk.Label(self, text="Build The Galaxy")
self.button_new_game = tk.Button(self, text="New Game")
self.button_load_game = tk.Button(self, text="Load Game")
self.button_editor = tk.Button(self, text="Editor")
self.button_exit = tk.Button(self, text="Exit")
self.logo.grid(sticky="EW")
self.button_new_game.grid(row=1, sticky="EW")
self.button_load_game.grid(row=2, sticky="EW")
self.button_editor.grid(row=3, sticky="EW")
self.button_exit.grid(row=4, sticky="EW")
class ScreenEditor(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.grid()
parent.parent.geometry("{}x{}".format(WIDTH["Editor"], HEIGHT["Editor"]))
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.grid()
self.screen_open_main_menu()
def screen_open_main_menu(self):
self.screen_mainmenu = ScreenMainMenu(self)
def screen_open_editor(self):
self.screen_editor = ScreenEditor(self)
if __name__ == "__main__":
root = tk.Tk()
root.resizable(False, False)
root.title("Build The Galaxy")
main_app = MainApplication(root)
root.mainloop()
在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
顺便说一句,您可以使用Super()初始化父级:
super().__init__(parent) # yes, without self!
问题: 如何更改UIkit图标的颜色?具体来说,我想更改复选框图标的背景颜色。 这里是指向UIkit表单文档的链接。 我想改变背景的颜色。
我对PhpStorm很陌生。我加入了一个团队,开始开发一个新功能,但是发现我的文件的一部分现在没有了PHP通常显示的不同颜色。它有一个背景,我把它去掉了,但是文本是白色的(而不是橙色、黄色等)。).我不知道我做了什么,也不知道为什么只有文件的一部分是这样的,而其他部分是好的,但是任何帮助都是值得感谢的。 该文件是PHP,其中包含一些HTML。除了这一部分,其他所有内容都有正确的背景和正确的颜色。
我无法让JPanel改变颜色。我也不能让JFrame改变颜色。我在网上查过...我还有一个程序,它有几乎相同的代码来设置JPanel和JFrame。我就是不能让它起作用。 下面是我的主要方法: 编辑:稍后在我的主要方法中有 下面是JPanel的构造函数: 背景颜色保持默认灰色。
问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:
为什么改变java.awt.canvas的背景颜色就改变了整个框架的背景? 这可能是问题所在吗(我在Ubuntu上运行这个)? 还是我在这里遗漏了什么?
问题内容: 我有一个Swing JButton,我的项目也使用了以下代码: 现在,当尝试使用一个按钮更改背景时,它不会变成红色,只有边框变成红色。 在仍用于其余组件/项目时,如何将背景变为红色? 问题答案: 看一下错误4880747:XP L&F:REGRESSION:JButton上的setBackground设置Windows XP中的边框颜色 。评估部分指出: 更改按钮的外观总是会导致与当前