Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在tkinter中使用自定义字体路径?仅限窗口_Python_Python 3.x_Windows_Tkinter_Fonts - Fatal编程技术网

Python 如何在tkinter中使用自定义字体路径?仅限窗口

Python 如何在tkinter中使用自定义字体路径?仅限窗口,python,python-3.x,windows,tkinter,fonts,Python,Python 3.x,Windows,Tkinter,Fonts,我想使用与python程序位于同一目录中的字体,但实际上python会在windows fonts文件夹中搜索它,我应该如何修复它 (我想为我的程序提供字体路径或导入字体以在标签中使用它) 例如: 在这里,如果字体文件夹中的字体myfont,我的程序将工作,但如果不工作,它将以默认字体显示 从tkinter导入* root=Tk() my_lab=标签(根,字体=(“myfont”,10)).place(x=1,y=1) 我使用了font=(f“path/to/font”,10),但它不起作用

我想使用与python程序位于同一目录中的字体,但实际上python会在windows fonts文件夹中搜索它,我应该如何修复它

(我想为我的程序提供字体路径或导入字体以在标签中使用它)

例如: 在这里,如果字体文件夹中的字体
myfont
,我的程序将工作,但如果不工作,它将以默认字体显示

从tkinter导入*
root=Tk()
my_lab=标签(根,字体=(“myfont”,10)).place(x=1,y=1)

我使用了
font=(f“path/to/font”,10)
,但它不起作用

问题:如何在tkinter中使用自定义字体路径仅限Windows

参考

  • def loadfont(fontpath,private=True,enumerable=False)


将函数更改为Python 3:

def loadfont(fontpath, private=True, enumerable=False):
    ...

    # For 3.x, you have to convert the isinstance checks to bytes and str

    if isinstance(fontpath, bytes):
        pathbuf = create_string_buffer(fontpath)
        AddFontResourceEx = windll.gdi32.AddFontResourceExA

    elif isinstance(fontpath, str):
        pathbuf = create_unicode_buffer(fontpath)
        AddFontResourceEx = windll.gdi32.AddFontResourceExW
    ...
尝试变量
private=False
enumerable=True
,并确保输入的字体名称正确。

运行函数
loadfont(…)
,如:

loadfont("path//to//font.ttf", private=False, enumerable=True)

这回答了你的问题吗?事实上,它只是说使用照片代替,因为我的gui程序有很多窗口,我不能在其中使用照片,除非我用类编写它,我不知道如何,实际上我不想让它可编辑,你知道如果有人更改照片,我的程序将强制更改“只是说使用照片代替”:您也读过最后一条评论了吗?
fontload(“path\\to\\font.tff”)
:应该是
.ttf
。尝试不同的参数
private=False,enumerable=True
是的,现在它可以工作了,非常感谢,我应该如何接受您的评论作为答案显示给其他人?是的,实际上它已经解决并正确显示了,但文本大小已更改。它与编译有关吗?不编译“它与编译相关吗?”:编译版本的行为不同是一个常见问题。它们经常丢失相关文件,并退回到默认值或全部失败。您是否仔细检查过,您的
.ttf
文件与
loadfont(…
使用的文件完全相同?请编辑答案以显示您使用的
loadfont(…
参数。是的,它们是相同的,在我的电脑上也可以,但是当我在另一台电脑上运行我的程序时,问题就出现了。我应该在答案中编辑什么?您已经编辑了它