首页 > 解决方案 > Python tkmacosx 错误:“systemWindowBackgroundColor”

问题描述

我正在尝试更改按钮的前景色。我正在使用 mac big sur 并安装了 tkmacosx,但我相信 tkmacosx 存在问题。

运行以下代码,或尝试使用一般的 button2 会引发错误:

import tkinter as tk
from tkmacosx import Button


window = tk.Tk()


button = tk.Button(window, text='Text', highlightbackground='gray15', fg='pink')
button.pack()

button2 = Button(window, text='Text')#, highlightbackground='gray15', fg='pink')
button2.pac()

window.mainloop()

Traceback (most recent call last):
  File "/Users/user/Desktop/BPF_Program/Save Logs/May 9, 2021/Tkinter stackoverflow thing.py", line 11, in <module>
    button2 = Button(window, text='Text')#, highlightbackground='gray15', fg='pink')
  File "/usr/local/lib/python3.9/site-packages/tkmacosx/widgets/button.py", line 55, in __init__
    ButtonBase.__init__(self, 'normal', master, cnf, **kw)
  File "/usr/local/lib/python3.9/site-packages/tkmacosx/basewidgets/button_base.py", line 1045, in __init__
    _Canvas.__init__(self, master=master, **kw)
  File "/usr/local/lib/python3.9/site-packages/tkmacosx/utils/__init__.py", line 158, in __init__
    tkinter.Widget.__init__(self, master, 'canvas', cnf, kw)
  File "/usr/local/Cellar/python@3.9/3.9.0_2/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 2569, in __init__
    self.tk.call(
_tkinter.TclError: unknown color name "systemWindowBackgroundColor"

标签: pythonpython-3.xmacostkinter

解决方案


我必须对值 systemWindowBackgroundColor 和 systemTextColor 进行硬编码,以免它们引发错误。更改是每个 SYSTEM_DEFAULT_BG 和 SYSTEM_DEFAULT_FG 的第二个变量。这是在我的tkmacosx/utils/__init__.py文件中。

SYSTEM_DEFAULT_BG = "white"
SYSTEM_DEFAULT_FG = "black"
if sys.platform == 'darwin':
    SYSTEM_DEFAULT_BG = "systemWindowBackgroundColor"
    SYSTEM_DEFAULT_BG = "#FFFFFF"
    SYSTEM_DEFAULT_FG = "systemTextColor"
    SYSTEM_DEFAULT_FG = "#000000"

这可能不是正确的解决方法,但它似乎可以完成这项工作。


推荐阅读