Python - Tkinter не поддерживает MacOS Mojave Dark Mode
У меня проблема с поддержкой Dark Mode на MacOS в питоне Tkinter. Я использовал python 3.6 с ActiveTlc 8.5 и Dark Mode работает нормально, окно заголовка окна было темным, это нормально для меня... но были некоторые проблемы с <MouseWheel>
поддержки, затем я обновил python до 3.7.1 и версия tlc обновлена до 8.6.
Но теперь Dark Mode не работает, и странно, почему это происходит?
Это пример кода:
from tkinter import *
if __name__ == '__main__':
root = Tk()
hero_text = Label(root, fg='white', bg='black', text='HERO TEXT')
hero_text.grid(row=0, sticky=N+W)
print(root.tk.exprstring('$tcl_library'))
print(root.tk.exprstring('$tk_library'))
root.mainloop()
2 ответа
Я тоже столкнулся с такой проблемой, я думаю, вы должны попробовать это
from tkinter import *
if __name__ == '__main__':
root = Tk()
root.configure(bg="black")
hero_text = Label(root, fg='white', bg='black', text='HERO TEXT')
hero_text.grid(row=0, sticky=N+W)
print(root.tk.exprstring('$tcl_library'))
print(root.tk.exprstring('$tk_library'))
root.mainloop()
Используя базовый модуль tkinter, невозможно автоматизировать темный режим без другого модуля, такого как подпроцесс. Я рекомендую вам добавить настройку для темного режима, но если вы хотите, чтобы он все еще был автоматизирован, вот код для этого:
from tkinter import *
import subprocess
def check_appearance():
cmd = 'defaults read -g AppleInterfaceStyle'
p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
if bool(p.communicate()[0]):
return "black"
else:
return "white"
win = Tk()
win.configure(bg=check_appearamce())
win.mainloop()