使用配置时,Tkinter返回错误。例如,我使框架上的按钮具有bg =“ black”,它将引发错误。
_tkinter.TclError:未知选项“ -bg”
我尝试同时使用两者
b = Button(self.menuFrame, Text="Test", bg="black")
和
b.config(bg="black")
两者都抛出相同的错误。
class Run(Frame):
def __init__(self, master):
super(Run, self).__init__(master)
# | Variables |
self.cur_frame = 0
self.t = ""
# | Frames |
self.frames = []
for i in range(2):
self.frames.append(i)
self.frames[0] = self.loadFrame = Frame(self)
self.frames[1] = self.mainFrame = Frame(self)
# | Widgets |
self.load_widgets()
self.menu_widgets()
# | Main |
self.grid()
self.frames[1].grid()
def go_frame(self, frame):
if frame != self.cur_frame:
self.frames[self.cur_frame].grid_remove()
self.frames[frame].grid()
self.cur_frame = frame
def load_widgets(self):
pass
def menu_widgets(self):
self.t = Text(self.frames[1], width=63, height=37, bg='#847676', state=DISABLED)
self.t.grid(row=0, column=1, rowspan=6, sticky="nsew")
b_start = Button(self.frames[1], text='Start', command=lambda: self.daily())
b_stop = Button(self.frames[1], text='Stop', command=lambda: self.stop())
b_run1 = Button(self.frames[1], text='Run Exp', command=lambda: self.run(1))
b_run2 = Button(self.frames[1], text='Run Scan', command=lambda: self.run(4))
b_run3 = Button(self.frames[1], text='Run Inc', command=lambda: self.run(7))
b_config = Button(self.frames[1], text='Config', command=lambda: self.go_frame(0))
s_bar = Scrollbar(self.frames[1], command=self.t.yview)
s_bar.config(bg="#403939")
b_start.grid(row=0, column=0)
b_stop.grid(row=1, column=0)
b_run1.grid(row=2, column=0)
b_run2.grid(row=3, column=0)
b_run3.grid(row=4, column=0)
b_config.grid(row=5, column=0)
s_bar.grid(row=0, column=2, sticky='nsew', rowspan=6)
self.t['yscrollcommand'] = s_bar.set
app = Tk()
app.config(bg='#403939')
w = 600
h = 600
ws = app.winfo_screenwidth()
hs = app.winfo_screenheight()
x = int((ws/2) - (w/2))
y = int((hs/2) - (h/2))
app.geometry()
app.geometry(f'{w}x{h}+{x}+{y}')
Run(app)
app.mainloop()
我希望这会使滚动条具有我在python 3.4之前使用过的此方法设置的颜色。目前在python 3.7上运行,它给我tk小部件上的配置错误。任何帮助将不胜感激。
答案 0 :(得分:2)
如评论中所述,您的导入看起来像这样
from tkinter import *
from tkinter.messagebox import *
from tkinter.ttk import *
tkinter
和ttk
都有一个Button
类,并且由于您使用通配符导入(*
),因此它们都应作为Button
导入。由于两个不同的对象不能具有相同的名称,因此ttk
Button
会覆盖tkinter
Button
,因为它是稍后导入的。
因此,当您执行b = Button(...)
时,不是在使用tkinter
版本,而是在ttk
的{{1}}版本中使用,因为错误提示该版本没有Button
选项。
为避免此类混乱,请避免导入通配符。而是将您的进口商品设为
bg
然后可以使用import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
之类的tkinter
Button
和b = tk.Button(...)
之类的ttk
按钮
P.S。如果您想使用b = ttk.Button(...)
ttk
,use ttk.Style()
to change its appearance。