问题:如何使用Kivy在TextInput中正确呈现所有Unicode字符?
我在0x0200和0x9990之间的范围内生成随机Unicode字符,这是一个很大的问题,即大部分字符在TextInput中无法正确呈现,更具体的是不到一半将起作用。
什么不渲染最终看起来像一个带有x的小矩形,但当我将其复制并粘贴到另一个显示源时,它工作正常。我已经通过空闲运行代码,它显示正常,问题似乎与kivy,任何关于为什么会发生这种情况的建议?
import random
import kivy
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.app import App
kivy.require('1.9.1')
class testclass(object):
def example(self, event):
k_len = list()
complete = ''
for i in range(32):
k_len.append(random.randint(0x0200, 0x9990))
for i in k_len:
if i != 32:
complete += chr(i)
result.text = complete
t = testclass()
Root = Widget(size = (600, 200))
buttonOne = Button(text = 'click me', pos = (1,170), size = (120,30))
buttonOne.bind(on_press = t.example)
result = TextInput(hint_text = 'Output: ', size = (600, 50), pos = (0, 0), multiline = (True))
Root.add_widget(buttonOne)
Root.add_widget(result)
class testappApp(App):
def build(self):
return Root
Window.size = (600, 200)
if __name__ == '__main__':
testappApp().run()
此代码仅在您有kivy设置时才有效,您可以调整它以便在空闲状态下工作,但正如我所说,代码按预期工作,它只是在kivy内无法正确显示:)
答案 0 :(得分:2)
您的字体似乎不支持这些字符 - 切换到另一个支持该范围的字体(有关需要的更多信息,请参阅https://en.wikipedia.org/wiki/Unicode_block)