首页 > 解决方案 > PySimpleGUI:字体渲染问题

问题描述

我在我的开发机器上使用字体,但是当我将应用程序捆绑为 exe 并将其部署到另一台没有安装该字体的机器上时,字体渲染将变为默认值。有没有办法可以将字体与 exe 捆绑在一起并让 PySimpleGUI 使用它而不是尝试在系统中找到字体(这意味着需要先安装它)?有什么解决方法吗?

import PySimpleGUI as sg    
sg.set_options(font=['Inder',10]) 

标签: fontspysimplegui

解决方案


您可以使用库pyglet添加字体文件,并使用选项--add-data <SRC;DEST or SRC:DEST>PyInstaller捆绑字体文件。

要添加到可执行文件的其他非二进制文件或文件夹。路径分隔符是特定于平台的os.pathsep;在 Windows 和:大多数 unix 系统上)被使用。此选项可以多次使用。

演示代码

import pyglet
import PySimpleGUI as sg

# pyglet.font.add_file(r".\MerryChristmasFlake.ttf")
# pyglet.font.add_file(r".\MerryChristmasStar.ttf")

sg.theme("DarkBlue3")
font1 = ("Merry Christmas Flake", 40)
font2 = ("Merry Christmas Star", 40)

layout = [
    [sg.Text("Merry Christmas Flake", font=font1)],
    [sg.Text("Merry Christmas Star",  font=font2)],
]

window = sg.Window('Title', layout, finalize=True)

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    print(event, values)

window.close()

在此处输入图像描述

在未标记的两行注释之后,

在此处输入图像描述

注意:从https://www.1001freefonts.com/d/17982/merry-christmas.zip下载字体文件,并将这两个字体文件放在与主脚本相同的路径下。


推荐阅读