首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySimpleGUI:字体呈现问题

PySimpleGUI:字体呈现问题
EN

Stack Overflow用户
提问于 2021-05-25 05:50:42
回答 1查看 382关注 0票数 0

我在开发机器上使用字体,但是,当我将应用程序打包为exe并将其部署到另一台没有安装该字体的计算机上时,字体呈现将转移到默认状态。有什么方法可以将字体与exe捆绑在一起,并让PySimpleGUI使用它而不是试图在系统中定位字体(这意味着需要先安装字体)?有什么解决办法吗?

代码语言:javascript
复制
import PySimpleGUI as sg    
sg.set_options(font=['Inder',10]) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-25 09:20:50

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

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

更新使用tkinter.filedialog模块的问题。在代码之前设置COINIT_APARTMENTTHREADED模式。

演示代码

代码语言:javascript
复制
import pyglet
from pyglet.libs.win32 import constants
import PySimpleGUI as sg


constants.COINIT_MULTITHREADED = 0x2  # 0x2 = COINIT_APARTMENTTHREADED

# 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)],
    [sg.Input(), sg.FolderBrowse()],
]

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下载的字体文件,并将这两个字体文件放到与主脚本相同的路径上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67682406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档