ttkthemes 应用于 root 时不会为整个窗口设置主题

问题描述 投票:0回答:1

我在 ttkthemes 中尝试过的主题都不会为整个窗口设置主题。我将主题应用于根/自身,它只会主题文本/按钮

截图:

Window

我本以为窗口会填满整个路径,有什么我遗漏的吗?

代码:

class Window(ThemedTk):
    def __init__(self):
        ThemedTk.__init__(self)

        self.tk.call('lappend', 'auto_path', 'correct_path_to_theme')
        self.tk.call('package', 'require', 'awdark')
        s = ttk.Style()
        s.theme_use("awdark")

        # frame all content will sit inside of
        mainframe = ttk.Frame(self, width=self.width, height=self.height)
        mainframe.pack(side="top", fill="both", expand=True)


        self.frames = {}

        for F in (
            HomePage,
        ):
            frame = F(mainframe, self)


            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(HomePage)

    def show_frame(self, fr):
        frame = self.frames[fr]
        frame.tkraise()


# Home Page of the app
class HomePage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        

        # header label
        header_label = ttk.Label(
            self, text="Post Visual Inspection Board Capture Program", justify="center"
        )
        header_label.pack()

        # will start the new capture process
        new_capture_buton = ttk.Button(
            self,
            text="New Capture",
            command=lambda: controller.show_frame(InstructionsPage),
        )

        new_capture_buton.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
python tkinter tcl tk-toolkit ttkthemes
1个回答
0
投票

顶层(包括主窗口)是不是主题小部件。他们对主题系统一无所知。他们还拥有其他重要的权力,使得简单地重复代码“但带有主题”变得非常重要。

简单的修复(即我一直在做的)是将主题框架打包在顶层作为唯一的直接子级,并使其始终覆盖其整个父级。然后将其他主题小部件放入其中。从技术上讲,它不是一个主题顶层,但它的外观和工作原理就像它一样(前提是您使用正确的手柄来使用它),所以这已经足够好了。

© www.soinside.com 2019 - 2024. All rights reserved.