【问题标题】:Using ttk theme azure-dark and Changing background color of ttk combobox widget使用 ttk 主题 azure-dark 和更改 ttk 组合框小部件的背景颜色
【发布时间】:2022-06-13 12:27:12
【问题描述】:

我正在使用 ttk azure 主题 dark Azure-ttk-theme。它将背景颜色设置为漂亮的现代 UI。但是,如图所示,tk 窗口、文本小部件和组合框小部件的背景颜色设置为相同。当我们将所有这些与区域中的一些文本一起使用时,这看起来很糟糕(如下图右侧所示)。

我尝试如下修改组合框的背景(请原谅完整的导入 - 仅用于复制):

from tkinter import *
from tkinter.ttk import *

root = Tk()
style = ttk.Style(root)
root.tk.call("source", SYSTEM_DIR / "azure.tcl")
root.tk.call("set_theme", "dark")
style.configure("TCombobox", fieldbackground= "orange", background= "white")
g_combo = Combobox(root, style="TCombobox")

但是,上面的代码对我的界面没有任何影响。如果有人对我如何处理这个有任何想法。我可能需要为这个主题修改 tcl 文件。因为,我对 tcl 的了解有限,所以我在这里寻找答案/建议。

【问题讨论】:

    标签: python tkinter ttk ttkwidgets ttkthemes


    【解决方案1】:

    啊,好吧,我正在回答这个问题,因为我昨天也尝试使用这个主题。我的想法和你的想法太相似了。我想更改默认颜色和内容以获得更好的 UI。在进入解决方案之前,我必须告诉你,这个主题将默认值和设计覆盖为作者设置的自定义创建的主题。所以这里是你可以做的事情来实现你想要的。

    据我所知,唯一的方法是编辑 TCL 文件,该文件管理小部件的颜色。如果您在深入了解TCL 语言之前对它有所了解,那将会有所帮助。所以我一步一步告诉你:

    1. 转到dark.tcl 文件,然后找到要更改背景颜色的小部件代码。假设您要更改组合框的背景颜色。因此,如果您使用的是 Windows,则可以在打开该文件后按 ctrl+f 搜索 "Combobox"(我建议使用记事本编辑它,它更易于访问)。


    好的,这里是您要更改的代码。正如您在代码的第三部分 (ttk::style element create Combobox.field) 中看到的,它用于创建组合框小部件。您可以继续尝试更改不同的语句并自定义整个 Combobox 及其效果(如果您知道如何)。但现在让我们关注背景颜色


    1. 在那里,您会看到默认背景设置为称为 box-basic 的图像。

    所以现在你必须转到Azure-ttk-theme/theme/dark 文件夹并找出box-basic 文件的位置。找到它后,您必须以相同大小编辑该图像的颜色,然后替换旧图像并确保设置相同的名称。我建议您使用figma 复制另一个图像。这很简单。将其更改为您想要的任何颜色。

    你就完成了!

    【讨论】:

    • 感谢您的回复。当我更改图像时它确实有效。我想我需要更改其中的一些才能使用这个主题。 ;D ;) 有 box-basic 可以改变 fieldbackground。我现在也需要更改下拉框。
    • 很高兴它对您有用。是的,付出一点努力是值得的。
    【解决方案2】:

    使用其他一些主题 fieldbackground 可以,但不适用于 Azure(或我的任何主题)。

    Tk 对包含透明度的 PNG 图像的处理非常糟糕,尤其是在 Microsoft Windows 上。 为了减少滞后,我删除了图像元素的透明区域,因此您期望fieldbackground 的位置实际上是图像的背景,看起来就像是 fieldbg。

    所以解决办法是把图片编辑成TechieGeekesuggested

    【讨论】:

    猜你喜欢
    • 2011-04-30
    • 2023-02-23
    • 1970-01-01
    • 2014-07-08
    • 2013-04-20
    • 2020-10-18
    • 2013-07-12
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多