我对这个简单的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()
答案 0 :(得分:2)
frame.config(background="black")
返回错误unknown option "-background"
,因为这是ttk.Frame
,而不是tkinter.Frame
,ttk.Frame
的背景使用ttk.Style
(参见下面的示例)。
lab.config(background="black")
提供错误'NoneType' object has no attribute 'config'
,因为您lab = tk.Label(...).grid(...)
和grid
返回None
,因此lab
为None
},而不是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()