如何将ttk.Notebook框架配置为平面浮雕?

Lia*_*fee 3 python user-interface tkinter ttk

我正在使用 ttk 作为笔记本,我尝试将笔记本的框架更改为平面浮雕,但没有太多有用的来源

我想改变什么

环顾四周后,我知道这ttk非常依赖于样式,因此我创建了一种新样式,但到目前为止只能更改一些元素,因为我找不到要更改的确切元素名称。这包括框架的浮雕Notebook

    style = ttk.Style()
    style.theme_create(
        "name", parent="alt", settings = {
            ".": {"configure": {"background": BG_COLOUR,
                                "foreground": "white",
                                "relief": "flat"}},
            "TLabel": {"configure": {"foreground": "white",
                       "padding": 10,
                       "font": ("Calibri", 16)}},
            "TNotebook": {"configure": {"tabmargins": [2, 5, 2, 0]}
                         },
            "TNotebook.Tab": {
                "configure": {"relief" : "flat",
                              "bordercolor" : BG_COLOUR,
                              "darkcolor" : BG_COLOUR,
                              "lightcolor" : BG_COLOUR,
                              "padding": [5, 1], "background": BG_COLOUR
                             },
                "map": {"background": [("selected", BG_COLOUR)],
                        "expand": [("selected", [1, 1, 1, 0])]}
            }
        })

    style.theme_use("name")
Run Code Online (Sandbox Code Playgroud)

你可能会看到我遵循 Visual Studio 代码的风格,所以首先是使该框架平坦,然后展开选项卡,到目前为止 ttk 给我带来了困难

小智 5

这是一个很老的问题,但我也想知道,并且似乎找到了答案,所以我还是把它发布出来吧。使用"borderwidth",不使用"relief"

通过该属性,"borderwidth"您可以设置边框的粗细。只需将其设置为零,浮雕就会消失。

您可以为笔记本进行设置,以使页面边框消失。

"TNotebook": {
              "configure": {"tabmargins": [2, 5, 2, 0]},
              "borderwidth": 0
             }
Run Code Online (Sandbox Code Playgroud)

我的程序中的示例:

正常(有边框/浮雕):

正常(有边框/浮雕)

页面有平坦边框:

页面边框平坦

您还可以为笔记本选项卡设置它,以使边框消失:

"TNotebook.Tab": {
                  "configure": {
                                "borderwidth": 0,
                                "bordercolor" : BG_COLOUR,
                                "darkcolor" : BG_COLOUR,
                                "lightcolor" : BG_COLOUR,
                                "padding": [5, 1], "background": BG_COLOUR
                                }
                  }
Run Code Online (Sandbox Code Playgroud)

两个边界都设置为零:

两个边界都设置为零

我只在Windows上测试过,不知道Mac或Linux是否有差异。