【问题标题】:tkFileDialog asksaveasfile text color/fonttkFileDialog asksaveasfile 文本颜色/字体
【发布时间】:2019-05-08 09:17:20
【问题描述】:

我正在使用 tkFileDialog 中的 asksaveasfile 函数来使用我正在创建的 GUI 保存文件。我想更改对话框另存为窗口中字体的颜色。搜遍了互联网,我没有发现有人问同样的问题。

【问题讨论】:

  • 附加信息:我的 debian KDE 系统上的 tkinter.filedialog 存在问题。当我使用文件对话框时,里面的文本(文件和文件夹文本)都非常浅,并且在白色背景上。文字很轻,我几乎看不到那里有什么东西。当我用鼠标将鼠标悬停在微弱的文本上时,按住左键单击,文本变得高对比度且可见,就好像被突出显示一样。我必须以这种方式突出显示所有文本以使其可见。这似乎是一个错误。 (KDE 系统设置 Theme 和 Style 为 Breeze Dark & Oxygen, Python 3.9.2)

标签: python-2.7 tkinter


【解决方案1】:

免责声明:我使用的是 Linux,我不确定我的回答是否完全适用于其他平台,因为 Windows 中的文件对话框看起来完全不同。

不可能完全改变字体的颜色,因为它的一部分在 tcl 代码中是硬编码的。

文件列表周围的元素主要是 ttk 小部件,可以通过 ttk.Style 进行主题化,因此它们看起来像应用程序的其余 ttk 小部件。可以使用option_add 更改菜单。 但是,文件列表不是可定制的。实际上,未选择时文件名会被设置回黑色,因此无法从 python 更改该行为。

import tkinter as tk
from tkinter import filedialog
from tkinter import ttk


root = tk.Tk()
root.option_add('*foreground', 'red')  # set all tk widgets' foreground to red
root.option_add('*activeForeground', 'red')  # set all tk widgets' foreground to red

style = ttk.Style(root)
style.configure('TLabel', foreground='red')
style.configure('TEntry', foreground='red')
style.configure('TMenubutton', foreground='red')
style.configure('TButton', foreground='red')
filedialog.askopenfilename(master=root, filetypes=[('*', '*'), ('PNG', '*.png')])
root.mainloop()

【讨论】:

  • 这很完美,我试试看。出于某种原因,环境文本颜色默认设置为白色。在对话框窗口中,当取消选择文件时,它会变成黑色,就像你提到的那样,但黑色是我想要的颜色。我在具有 2.4 和 2.7 的系统上运行 gui。 gui 是在 tix 中编码的(故意),我不认为 filedialog 实际上是在为 ttk 提取环境设置。只安装了 2.4 的系统没有这个问题,因为我想它只从 tix 中提取环境。
  • 另外,如果您想专门针对文件/文件夹列表,可以使用模式*TkFDialog*foreground*TkChooseDir*foreground
  • 有点跑题了,但我看到您是tkfilebrowser 的维护者,我想知道它是否可以让您更改文本的字体大小?在 tkinter 中,我可以更改 TCL 中除文本以外的所有内容的字体大小:style.configure('.', font=(None, 12)),这包括列表中的TLabelTButton 等。
  • 啊,当我找到解决方案时,我刚一问:default_font = font.nametofont("TkTextFont") 然后:default_font2 = font.nametofont("TkIconFont") 然后:default_font.configure(size=12) 最后:default_font2.configure(size=12)
  • 是否可以在文件对话框小部件的列表中更改用于文件夹和文件的图标的大小?如果我更改“TkIconFont”的大小,图标大小保持不变。
猜你喜欢
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多