gpt4 book ai didi

python - Linux 上用于 Python 和 Tkinter 的字体管理

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:56 27 4
gpt4 key购买 nike

我用 Python2.7/Tkinter 编写了一个应用程序。我有 2 台 Linux 机器:
1 Xubuntu 与 python 2.7.41 CentOS (5.2) with python 2.7.1(不幸的是,在有人问之前,我无法升级这台机器)

我通过 SSH 从我的 WindowsXP 笔记本电脑连接两台机器,然后导出显示。 Xming作为X服务器安装在windows机器上。该脚本在两台机器上完全相同(共享驱动器安装在两台机器上)。

在我的脚本中:

# show which fonts the system know 
print tkFont.families()
# configure the default font
default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(family="Liberation Sans", size="10")
master.option_add("*Font", default_font)

字体“Liberation”安装在 Linux 机器和 Xming 中(并已配置)。
在应用程序中,我使用了网格管理器,因此字体对生成的界面有很大影响。

当我从 Xubuntu 启动应用程序时:

  • 应用程序界面看起来非常漂亮。 tkFont.families 给我看一些Xming 中未安装的字体(但在 Xubuntu 中)

当我从 CentOs 启动应用程序时:

  • 应用程序界面丑陋,几乎不可读且完全变形了。 tkFont.families 在列表中显示“解放”字体仅当在 Xming 中安装和配置时。

我从今天早上就开始摸不着头脑,我什至把 Xubuntu 的 liberation*.ttf 文件复制到所有其他机器上,但没有成功

如何抑制两台机器之间的这种差异,使我的界面在两台机器上看起来都一样?

任何帮助将不胜感激

最佳答案

据推测,您的 tk 安装服务器端依赖于 X Core 字体子系统来呈现字体(这就是它显示 xming 字体的原因)。

这个子系统很久以前就被fontconfig取代了(但是tk切换的很晚)。 Centos 5.2 可能已经足够老了,它的 tk 版本仍然依赖于 X Core 字体子系统。但是,Fedora 和 Red Hat 很久以前就停止将系统 TrueType 字体公开为 X Core 字体(它破坏了遗留应用程序)。

所以您的解决方案是:

– 升级到可以使用 fontconfig 的 tk(或重新配置它以使用 fontconfig):这样它将看到 Centos 中安装的现代字体,包括 Liberation http://wiki.tcl.tk/9015

——或者,使用所有传统魔法在 xfs 中公开解放字体(mkfontdir 和 friend ,如所有 2000 年之前的 Linux 字体 howtos 中所述)。并祈祷不会破坏其他东西,X 核心字体系统不是特别健壮。

https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-x-fonts.html

中期你将不得不以 fontconfig 的方式来做,因为 x 核心字体即将淘汰(当 RHEL 5 大约在 2007 年发布时已经是这种情况)。

关于python - Linux 上用于 Python 和 Tkinter 的字体管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com