不能在tkinter中使用背景颜色

时间:2018-04-16 10:10:51

标签: python tkinter colors

我对这个简单的tkinter程序感到绝望:我似乎无法改变背景颜色(或各个小部件的颜色)!这里出了什么问题?

以下是我和我收到的错误的各种尝试的要点

import tkinter
import tkinter.ttk as tk

root = tkinter.Tk()

frame= tk.Frame(root)
frame.grid(column=0, row=0)

tk.Button(frame, text="Open file", command=None).grid(column=0, row=1 )
lab=tk.Label(frame, text="test test test test test test ").grid(column=0, row=2 )

#root.config(background="black")    # does nothing
#frame.config(background="black")   # Error: unknown option "-background"
#lab.config(background="black")     # Error: 'NoneType' object has no attribute 'config'

root.mainloop()

2 个答案:

答案 0 :(得分:2)

  • frame.config(background="black")返回错误unknown option "-background",因为这是ttk.Frame,而不是tkinter.Framettk.Frame的背景使用ttk.Style(参见下面的示例)。

  • lab.config(background="black")提供错误'NoneType' object has no attribute 'config',因为您lab = tk.Label(...).grid(...)grid返回None,因此labNone },而不是Label

  • root.config(background="black")什么也没做,因为窗口小部件填满了窗口,所以你看不到naknak12解释的背景。

以下是使用ttk小部件的示例:

import tkinter
from tkinter import ttk

root = tkinter.Tk()
root.configure(background='black')
# style configuration
style = ttk.Style(root)
style.configure('TLabel', background='black', foreground='white')
style.configure('TFrame', background='black')

frame = ttk.Frame(root)
frame.grid(column=0, row=0)

ttk.Button(frame, text="Open file", command=None).grid(column=0, row=1)
lab = ttk.Label(frame, text="test test test test test test ")
lab.grid(column=0, row=2)


root.mainloop()

没有ttk的示例:

import tkinter

root = tkinter.Tk()

frame = tkinter.Frame(root)
frame.grid(column=0, row=0)

tkinter.Button(frame, text="Open file", command=None).grid(column=0, row=1 )
lab = tkinter.Label(frame, text="test test test test test test ")
lab.grid(column=0, row=2)

root.configure(background='black')
lab.configure(background='black', foreground='white')
frame.configure(background='black')

root.mainloop()

答案 1 :(得分:1)

如果您使用root.config(background =“black”)并调整窗口大小,则可以看到黑色背景。

import tkinter
import tkinter.ttk as tk
from tkinter import * 

root = tkinter.Tk()

frame= tk.Frame(root)
frame.grid(column=0, row=0)

Button(frame, text="Open file", command=None).grid(column=0, row=1 )
Label(frame, bg='black', fg="white", text="test test test test test test ").grid(column=0, row=2 )

root.config(background="blue")
root.mainloop()