无法更改继承自 ttk.Frame 的 类 的样式
Can't change styles for classes inheriting from ttk.Frame
所以我只想更改框架的背景,这样我就可以正确地布置它们,但我似乎无法更改框架的样式。
style.configure('TFrame', background='red')
style.configure('Blue.TFrame', background='blue')
main_window = MainWindow(root, style='Blue.TFrame')
上面的代码结果是红色背景,而我需要把它改成蓝色,如果我不改变TFrame背景,根本就没有背景颜色。
我的 MainWindow class 确实继承自 ttk.Frame,所以我不知道这是否是造成它的原因...
最小可重现示例:
import tkinter as tk
from tkinter import ttk
class MainWindow(ttk.Frame):
def __init__(self, parent, *args, **kwargs):
super().__init__(parent)
self.parent = parent
# Search_company shortcut
self.search_comp = ttk.Entry(self)
self.search_comp.grid(row=0, column=0)
def main():
root = tk.Tk()
root.state('zoomed')
# Configuring styles
style = ttk.Style()
style.configure('TFrame', background='red')
style.configure('Blue.TFrame', background='blue')
main_window = MainWindow(root, style='Blue.TFrame')
main_window.grid(row=0, column=1, sticky='nsew')
root.mainloop()
if __name__ == "__main__":
main()
您没有将 style
选项传递给超类。必须是这样的:
super().__init__(parent, *args, **kwargs)
所以我只想更改框架的背景,这样我就可以正确地布置它们,但我似乎无法更改框架的样式。
style.configure('TFrame', background='red')
style.configure('Blue.TFrame', background='blue')
main_window = MainWindow(root, style='Blue.TFrame')
上面的代码结果是红色背景,而我需要把它改成蓝色,如果我不改变TFrame背景,根本就没有背景颜色。 我的 MainWindow class 确实继承自 ttk.Frame,所以我不知道这是否是造成它的原因...
最小可重现示例:
import tkinter as tk
from tkinter import ttk
class MainWindow(ttk.Frame):
def __init__(self, parent, *args, **kwargs):
super().__init__(parent)
self.parent = parent
# Search_company shortcut
self.search_comp = ttk.Entry(self)
self.search_comp.grid(row=0, column=0)
def main():
root = tk.Tk()
root.state('zoomed')
# Configuring styles
style = ttk.Style()
style.configure('TFrame', background='red')
style.configure('Blue.TFrame', background='blue')
main_window = MainWindow(root, style='Blue.TFrame')
main_window.grid(row=0, column=1, sticky='nsew')
root.mainloop()
if __name__ == "__main__":
main()
您没有将 style
选项传递给超类。必须是这样的:
super().__init__(parent, *args, **kwargs)