gpt4 book ai didi

python - 如何在kivy中制作文件选择器以支持不同语言的文件(英语,希伯来语)

转载 作者:行者123 更新时间:2023-12-01 01:15:10 26 4
gpt4 key购买 nike

我正在使用 kivy 的文件选择器,当文件夹中有一个带有希伯来语名称的文件时,它会打印出乱码......如果可能的话,我想支持不同的语言。尝试更改文件选择器中的字体名称,对我来说不起作用。你能帮我找出我做错了什么吗?

最佳答案

不仅仅是 FileChooser - Kivy 中 Label 的所有实例都使用 Roboto 字体作为默认字体,该字体似乎不支持 Unicode人物。尝试运行此代码:

from kivy.app import App
from kivy.uix.label import Label


class TestApp(App):
def build(self):
return Label(text="עִבְרִית‎")


if __name__ == '__main__':
TestApp().run()

several fonts随 Kivy 一起提供,其中之一是 DejaVuSans。让我们使用它:

from kivy.app import App
from kivy.uix.label import Label


class TestApp(App):
def build(self):
return Label(text="עִבְרִית‎", font_name='DejaVuSans.ttf')


if __name__ == '__main__':
TestApp().run()

现在希伯来语可以正确显示。不过,这对日语不起作用。对于该语言,您必须寻找另一种 Unicode 字体,将其放入目录中并传递给 font_name 属性。

无论如何。如何让FileChooser使用不同的字体?最简单的方法是将方法绑定(bind)到 on_entry_added 事件,以更改目录树中新创建的项目的属性:

from kivy.app import App
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout


Builder.load_string("""
<MyWidget>:
FileChooserListView
id: filechooser
""")

class MyWidget(BoxLayout):
def __init__(self, *args):
Clock.schedule_once(self.update_filechooser_font, 0)
return super().__init__(*args)

def update_filechooser_font(self, *args):
fc = self.ids['filechooser']
fc.bind(on_entry_added=self.update_file_list_entry)
fc.bind(on_subentry_to_entry=self.update_file_list_entry)

def update_file_list_entry(self, file_chooser, file_list_entry, *args):
file_list_entry.ids['filename'].font_name = 'DejaVuSans.ttf'


class MyApp(App):
def build(self):
return MyWidget()


if __name__ == '__main__':
MyApp().run()

关于python - 如何在kivy中制作文件选择器以支持不同语言的文件(英语,希伯来语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425450/

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