PySimpleGUI:字体渲染问题
PySimpleGUI: Font rendering issue
我在我的开发机器上使用了一种字体,但是当我将应用程序捆绑为一个 exe 并将其部署到另一台没有安装该字体的机器上时,字体呈现变为默认。有没有一种方法可以将字体与 exe 捆绑在一起并让 PySimpleGUI 使用它而不是尝试在系统中找到字体(暗示它需要先安装)?有什么解决方法吗?
import PySimpleGUI as sg
sg.set_options(font=['Inder',10])
您可以使用库 pyglet
添加字体文件,并使用 PyInstaller
的选项 --add-data <SRC;DEST or SRC:DEST>
来捆绑字体文件。
Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep
(which is ;
on Windows and :
on most unix systems) is used. This option can be used multiple times.
演示代码
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下载的字体文件,并将这两个字体文件放在与主脚本相同的路径中。
我在我的开发机器上使用了一种字体,但是当我将应用程序捆绑为一个 exe 并将其部署到另一台没有安装该字体的机器上时,字体呈现变为默认。有没有一种方法可以将字体与 exe 捆绑在一起并让 PySimpleGUI 使用它而不是尝试在系统中找到字体(暗示它需要先安装)?有什么解决方法吗?
import PySimpleGUI as sg
sg.set_options(font=['Inder',10])
您可以使用库 pyglet
添加字体文件,并使用 PyInstaller
的选项 --add-data <SRC;DEST or SRC:DEST>
来捆绑字体文件。
Additional non-binary files or folders to be added to the executable. The path separator is platform specific,
os.pathsep
(which is;
on Windows and:
on most unix systems) is used. This option can be used multiple times.
演示代码
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下载的字体文件,并将这两个字体文件放在与主脚本相同的路径中。