在kivy TextInput

时间:2016-08-24 16:07:29

标签: python kivy python-unicode

问题:如何使用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内无法正确显示:)

1 个答案:

答案 0 :(得分:2)

您的字体似乎不支持这些字符 - 切换到另一个支持该范围的字体(有关需要的更多信息,请参阅https://en.wikipedia.org/wiki/Unicode_block