我在我的Debian Sid笔记本上安装了两个Python,⑴ 系统自带的Python(v.2.7),包含一些实用程序包(包括Tkinter
)和⑵ Anaconda的Python 3。
很容易看出这两个Python版本有多少可用字体。
Python 2
>>> from Tkinter import Tk
>>> from tkFont import families
>>> Tk(); available = families() ### Tk() is needed to have a running tcl interpreter
<Tkinter.Tk instance at 0x7f977bcbfb90>
>>> len(available)
3011
Python 3
>>> from tkinter import Tk
>>> from tkinter.font import families
>>> Tk() ; available = families()
<tkinter.Tk object .>
>>> len(available)
68
我觉得Anaconda的tkinter
只查看了基本的X字体,该发行版附带的见下面的编辑。请问您知道以下替代方案中的哪一个能使Anaconda的tkinter
知道系统字体(首选方案),或者安装一些字体到Anaconda树中以便tkinter
使用吗?
- 让Anaconda的
tkinter
知道系统字体(首选方案)或 - 在Anaconda树中安装一些字体,以便
tkinter
可以使用它们?
tia
编辑 确实可用于Anaconda的字体是系统字体,但仅限于已知于xfontsel
的字体,即字体路径中可以使用xset
进行操作的字体。
我尝试了以下方法:
$ cd ~/.fonts ; mkfontscale ; mkfontdir ; xset fp+ `pwd`
同时xfontsel
显示了大约30个更多的字体系列。使用Python 3进行验证,我确认可用字体列表中仅添加了两个字体系列(即'go'
和'gomono'
- 没有'consolas'
等), 并生成一个标签。
...
r = Tk() ; Label(r, text="Go Mono", font=('gomono', 24)).pack()
使用Python 2和Python 3都能成功,但Debian的Python显示了一个漂亮的抗锯齿文本,而另一个则是(粗糙的)位图渲染。
因此,在某种程度上,我已经部分回答了我的问题,但是:
- 并非所有字体系列,如
xfontsel
所示,都被tkinter
接受。 - 即使对于极少数被识别的字体系列,呈现效果也远不能令人满意...
我想读到更好、更有用的答案。
'FONTCONFIG_PATH' in os.environ
的东西吗? - CommonSensefontconfig
有关的)环境变量。 - gboffi