我想在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
文本,但是它们太多了。 有没有更简单的方法?
显然,这是Kivy中常见的编码问题,其中使用了非UTF-8编码(例如chcp 1252)。一种方法是只找到文本的编码版本。例如,你可以做什么而不是这个
ButtonF:
text: 'Título'
是在文字中使用它的 UTF-8 编码版本。
ButtonF:
text: str(b'Txc3xadtulo'.decode())
对于您的情况,á -> xc3xa1 (in UTF-8 literal)
.您可以在此处查看整个列表。
或者,您可以简单地识别使用的编码。确保您的.kv
文件保存在UTF-8
from kivy.lang import Builder
with open('MyApp.renamed.kv', encoding='utf8') as f:
Builder.load_string(f.read())
这为我指明了答案。