从主题中取色
from PyQt6.QtWidgets import QApplication
from PyQt6.QtGui import QPalette
from PyQt6.QtCore import Qt
app = QApplication([]) # 必须先创建 QApplication 实例
# 获取应用程序的默认调色板
palette = app.palette()
# 从调色板中获取常用颜色
# 1. 窗口背景色 (通常是应用程序的主背景色)
window_background_color = palette.color(QPalette.ColorRole.Window)
print(f"窗口背景色: {window_background_color.name()}") # .name() 返回颜色的十六进制字符串,如 #RRGGBB
# 2. 文本颜色 (默认的文本颜色)
text_color = palette.color(QPalette.ColorRole.WindowText)
print(f"文本颜色: {text_color.name()}")
# 3. 按钮背景色
button_color = palette.color(QPalette.ColorRole.Button)
print(f"按钮颜色: {button_color.name()}")
# 4. 按钮文本颜色
button_text_color = palette.color(QPalette.ColorRole.ButtonText)
print(f"按钮文本颜色: {button_text_color.name()}")
# 5. 高亮色 (选中项的背景色,如列表或树视图中的选中项)
highlight_color = palette.color(QPalette.ColorRole.Highlight)
print(f"高亮色: {highlight_color.name()}")
# 6. 高亮文本色 (选中项的文本颜色)
highlight_text_color = palette.color(QPalette.ColorRole.HighlightedText)
print(f"高亮文本颜色: {highlight_text_color.name()}")
# 你还可以指定颜色组 (ColorGroup),如 QPalette.ColorGroup.Active, QPalette.ColorGroup.Disabled 等
# 默认情况下,QPalette.color() 会返回 QPalette.ColorGroup.Active 组的颜色
# 示例:获取禁用状态下的文本颜色
disabled_text_color = palette.color(QPalette.ColorGroup.Disabled, QPalette.ColorRole.WindowText)
print(f"禁用文本颜色: {disabled_text_color.name()}")
app.quit() # 退出应用程序实例
实际使用中可通过一个class来包装
class color():
def __init__(self):
# 由于Qt的特性 QApplication 只允许存在一个。我们期望它已经存在。
app_instance = QApplication.instance()
if app_instance is None:
raise RuntimeError("QApplication 必须在初始化 SystemColors 之前创建。")
self.color = app_instance.palette() # 获取应用程序的调色板
def get_color(self, color_role: QPalette.ColorRole) -> str:
# 从调色板中获取指定角色(如 QPalette.ColorRole.Window)的颜色
return self.color.color(color_role).name()
# 1. 窗口背景色
def window_background_color(self):
return self.get_color(QPalette.ColorRole.Window)
# 2. 文本颜色
def text_color(self):
return self.get_color(QPalette.ColorRole.WindowText)
# 3. 按钮背景色
def button_color(self):
return self.get_color(QPalette.ColorRole.Button)
# 4. 按钮文本颜色
def button_text_color(self):
return self.get_color(QPalette.ColorRole.ButtonText)
# 5. 高亮色 (选中项的背景色,如列表或树视图中的选中项)
def highlight_color(self):
return self.get_color(QPalette.ColorRole.Highlight)
# 6. 高亮文本色 (选中项的文本颜色)
def highlight_text_color(self):
return self.get_color(QPalette.ColorRole.HighlightedText)
# 你还可以指定颜色组 (ColorGroup),如 QPalette.ColorGroup.Active, QPalette.ColorGroup.Disabled 等
# 默认情况下,QPalette.color() 会返回 QPalette.ColorGroup.Active 组的颜色
# 示例:获取禁用状态下的文本颜色
def disabled_text_color(self):
return self.get_color(QPalette.ColorGroup.Disabled, QPalette.ColorRole.WindowText)
# 实际使用中只需要
colors = color()
print(colors.window_background_color())
print(colors.text_color())