'config(bg = [color])'在类中不起作用吗?

时间:2018-06-23 16:04:54

标签: python tkinter

我使用带有tkinter的类来创建窗口。但是,更改背景颜色对我不起作用。我已经看过另一个问题,并尝试了每种更改背景颜色的解决方案,但没有任何效果。这是我的代码:

from tkinter import *

class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)

        self.master = master
        self.init_window()
        self.mazeDrawing()


    def init_window(self):
        self.master.title('Maze')
        self.pack(fill=BOTH, expand=1)
        self.master.geometry("900x600")
        self.master.config(bg='black')

        menu = Menu(self.master)
        self.master.config(menu=menu)

        file = Menu(menu)
        file.add_command(label='Exit', command=self.clientExit)

        menu.add_cascade(label='File', menu=file)


    def clientExit(self):
        exit()


    def mazeDrawing(self):
        canvas = Canvas(self.master, width='900', height='600')
        canvas.pack()
        canvas.create_rectangle(100, 100, 800, 500, outline='red')


root = Tk()
App = Window(root)
App.mainloop()

如您所见,我在init_window中将背景色明确定义为黑色,在self.master.config(bg='black')中定义为黑色,但是在运行代码时,我得到了一个白色窗口。我不确定这是否仅是因为我的计算机很烂,还是我违反了某些python规则。请将此插入您的编辑器并运行代码。

1 个答案:

答案 0 :(得分:1)

窗口的背景确实是黑色的。但是,您正在用画布覆盖它,因此您将看不到黑色。您可以通过在打包画布时添加选项padx=10pady=10来查看此情况,以查看画布周围的黑色。如果您希望画布为黑色,请将其背景颜色设置为黑色(例如:canvas = Canvas(self.master, ..., background='black'

在评论中,听起来好像您在抱怨画布周围的白色细边框。如果您不希望该边框,请将borderwidth设置为零,并将highlightthickness设置为零。