标签文本不显示“a”(匈牙利语)

2024-04-19 08:02:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在kivy应用程序中显示匈牙利语字母,但每当我使用éáö或其他字母时,它都会显示为这样(é->;é)(á->;á)(ö->;ö

示例:

ButtonF:
    id: beallit
    pos_hint: {'x': .375, 'y': .27}
    text: "Beállitások"

现在这个按钮的文本显示为:Beállitások

我试过把字体改成支持匈牙利字母表的字体,尽管文字的字体改了,但字母还是没有显示出来。你知道吗

示例:

ButtonF:
    id: beallit
    pos_hint: {'x':.375, 'y': .27}
    text: "Beállitások"
    font_name: 'OpenSans'
    on_release: app.root.ids.sm.current  = 'screen5'

这里的Button's文本是OpenSans字体,但仍然没有显示匈牙利字母:Beállitások

但是当我用python代码而不是kivy规则编写按钮的文本时,包含匈牙利字母的文本显示正确。你知道吗

在py中:

beallit_text = StringProperty()
beallit_text = 'Beállitások'

单位:kv:

ButtonF:
    id: beallit
    pos_hint: {'x':.375, 'y': .27}
    text: root.beallit_text
    font_name: 'OpenSans'
    on_release: app.root.ids.sm.current  = 'screen5'

现在我可以更改py代码中的所有Label's/Button's文本,但是它们太多了。 有没有更简单的方法?你知道吗


Tags: textpos文本gtid字母字体root
1条回答
网友
1楼 · 发布于 2024-04-19 08:02:43

显然,这在Kivy中是一个常见的编码问题,Kivy使用的是非UTF-8编码(例如chcp1252)。一种方法是找到文本的编码版本。例如,你能做什么来代替这个

ButtonF:
    text: 'Título'

是使用UTF-8编码的文本版本。你知道吗

ButtonF:
    text: str(b'T\xc3\xadtulo'.decode())

对于您的情况,á -> \xc3\xa1 (in UTF-8 literal)。您可以查看整个列表here。你知道吗

或者,您可以简单地识别所使用的编码。确保您的.kv文件保存在UTF-8

from kivy.lang import Builder
with open('MyApp.renamed.kv', encoding='utf8') as f: 
    Builder.load_string(f.read())

this给我指了指答案。你知道吗

相关问题 更多 >