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()
Другие вопросы по тегам