Saa*_*aad 3 python macos tkinter python-3.x kivy
我正在尝试实现黑色文件对话框(Mac OS 深色模式)。我正在使用 Tkinter 文件对话框模块 ( import tkinter.filedialog)。
当我从任何其他应用程序打开文件对话框时,它们具有黑色背景,但是当我从tkinter.filedailog它们打开它时,它们具有默认的白色背景。
这是由打开的文件对话框的图像Tkinter:
从别处打开时 Mojave 暗模式支持的黑色文件对话框:
如果有什么办法可以用 获得黑色文件对话框Tkinter,请帮我我真的很想要黑色对话框。
样本.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()
Run Code Online (Sandbox Code Playgroud)
可能会出现无法让您在 Tkinter GUI 上获得适当暗模式支持的问题。所有这些都在我的 Mac 上,它可能在每个系统中都不同。
默认情况下,暗模式并不适用于所有应用程序,例如某些第三方应用程序和不受信任的开发人员的应用程序。我们仍然可以为这些应用程序实现暗模式,但并不是每个应用程序都能正常工作,这也许就是为什么它不是设置中的一个选项。
如果您对使用命令行没有信心,您可能不应该这样做。
启用暗模式,然后在终端中运行此命令:
defaults write -g NSRequiresAquaSystemAppearance -bool No
Run Code Online (Sandbox Code Playgroud)
注意: “是”表示对所有窗口禁用,“否”表示对所有窗口启用。
运行命令后注销并重新登录以注意更改。
如果要恢复为默认设置,只需NSRequiresAquaSystemAppearance使用以下命令删除设置即可。
defaults write -g NSRequiresAquaSystemAppearance -bool No
Run Code Online (Sandbox Code Playgroud)
如果您使用 Anaconda,那么您只需要执行 1st Step 即可在所有应用程序上获得暗模式,然后从命令行将 Tcl/Tk 更新到 8.6.9。(更多详情)
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
Run Code Online (Sandbox Code Playgroud)
结果
更新:
Anaconda 已将 Tcl/Tk 更新至 8.6.10 并添加了一个支持 macOS 不同外观模式(深色、浅色)的新命令,这意味着更改任何模式都会更改窗口和小部件的背景颜色,但它是一个有点毛病。而且我们还必须通过foreground = 'black才能看到Button
以及其他一些小部件。
conda install -c conda-forge/label/cf202003 tk
Run Code Online (Sandbox Code Playgroud)
解决第一个问题后,您将在 Tkinter 上获得暗模式,但如果您有 Tcl/Tk 8.6.8,则在 Tkinter 窗口上会出现黑屏。
示例图像
此问题已在 Tcl/Tk 8.6.9 中解决,但由于 python.org 尚未对其进行更新,并且还提供了他们自己的 Tcl/Tk 8.6.8 私有副本。他们不寻找或使用 Tcl/Tk 的任何第三方或系统副本(更多详细信息)。因此,如果您想从第三方安装它,那将是浪费时间。
我测试了内置 Tcl/Tk 8.6.9 的Python 3.7.2rc1,它在 Mojave 暗模式下运行良好,但由于在 Tk 8.6.9.1 中发现了一些回归,他们恢复了已发布的 python.org 3.7.2 macOS 安装程序到 Tcl/Tk 8.6.8。
示例图像

| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |