我正在尝试建立一个黑色文件对话框(Mac OS暗模式)。我正在使用Tkinter文件对话框模块(import tkinter.filedialog
)。
当我从其他任何应用程序打开文件对话框时,它们的背景都是黑色的,但是当我从tkinter.filedailog
打开文件对话框时,它们的背景是默认的白色。
这是Tkinter
打开的文件对话框的图像:
从其他位置打开的Mojave暗模式支持的黑色文件对话框:
如果可以通过Tkinter
获取黑色文件对话框,请帮助我,我真的想要黑色对话框。
sample.py
import tkinter.filedialog as _FD
_Master = _FD.Tk()
_Master.withdraw()
from kivy.core.window import Window as _kivy_window
class Open(_FD.Open):
def __init__(self, multiple=False, **options):
if multiple: options["multiple"]=1
super(Open, self).__init__(**options)
def show(self, **options):
s = super().show(**options)
_kivy_window.raise_window()
return s
if __name__ == "__main__":
from kivy.app import App
from kivy.uix.button import Button
_kivy_window.size = (250, 250)
class TestApp(App):
def open(self, *a):
s = Open(multiple=True)
s = s.show()
if s: print(s)
def build(self):
return Button(text='Hello World', on_release=self.open)
TestApp().run()
答案 0 :(得分:1)
答案 1 :(得分:1)
可能的问题不会使您在Tkinter GUI上获得适当的Mojave Dark Mode支持。所有这些都在我的Mac上,在每个系统上可能都不同。
我正在使用MacOS Mojave 10.14.4版本
默认情况下,暗模式并不适用于所有应用程序,例如第三方和不受信任的开发人员的某些应用程序。 我们仍然可以为那些应用程序实现“暗模式”,但是并不是每个应用程序都能正常运行,也许这就是为什么它不是设置中的选项的原因。
如果您对使用命令行不确定,则可能不应该这样做。
启用黑暗模式,然后在终端中运行此命令:
defaults write -g NSRequiresAquaSystemAppearance -bool No
注意:“是”表示禁用所有窗口,“否”表示启用所有窗口。
还原为默认设置。
defaults delete -g NSRequiresAquaSystemAppearance
如果您使用Anaconda,则只需执行第一步即可在所有应用程序上获得黑暗模式,然后从命令行将Tcl / Tk更新为8.6.9。 (More Details)
conda install -c conda-forge tk
conda install -c conda-forge/label/gcc7 tk
conda install -c conda-forge/label/broken tk
conda install -c conda-forge/label/cf201901 tk
结果
解决第一个问题后,如果您使用的是Tcl / Tk 8.6.8,则将在Tkinter上获得“暗模式”,但在tkinter窗口上获得黑屏。
示例图片
此问题已在Tcl / Tk 8.6.9中修复,但由于python.org尚未更新,还提供了自己的Tcl / Tk 8.6.8私有副本。他们不查找或使用Tcl / Tk(More Details)的任何第三方或系统副本。因此,如果您考虑从第三方安装它,我们将浪费时间。
我测试了Python 3.7.2rc1,它是在Tcl / Tk 8.6.9中构建的,并且可以在Mojave Dark Mode中很好地工作,但是由于在Tk 8.6.9.1中发现了一些回归,他们还原了发布的python.org 3.7.2 macOS安装程序返回到Tcl / Tk 8.6.8。
示例图片