Kivy TextInput 和字体

Posted

技术标签:

【中文标题】Kivy TextInput 和字体【英文标题】:Kivy TextInput and Fonts 【发布时间】:2013-09-10 19:53:57 【问题描述】:

有问题的代码

txt = TextInput(text='%s'%default, multiline=False, size_hint=(0.5,1))
txt.font_name = gAssets + "FreeSans.ttf"
Txt.font_size = 14

如果我注释掉 font_name 属性,则输入中的文本大约会对齐。 (在盒子里仍然有点高,但可行)

(使用默认字体(DroidSans.ttf)的普通TextInput)

但是,一旦我取消注释将其设置为 FreeSans.ttf(更大的字符集)的行,它现在在文本字段中的位置很高

(使用带有 FreeSans.ttf 的普通 TextInput)

我正在使用 kivy 1.3,但未能成功使 padding 属性起作用(但是,如果有人可以演示如何将它与 TextInput 一起使用,我会很乐意使用它。)

【问题讨论】:

首先,如果您真的在使用 kivy 1.3,为什么不升级到当前的稳定版本 (1.7)?自 1.3 以来发生了许多变化,包括影响 TextInput。 wstaw.org/m/2013/09/07/snapshot104.png 正在使用最新的 master。它也应该适用于最新的稳定版 1.7.2。 您知道如何在 .kv 文件之外设置填充吗?如果您这样做并将其发布为答案,我会接受。至于为什么我们使用 1.3 这是一个好问题,我会询问升级到最新的可能性 textinput_instance.padding = ('2dp', '2dp') 太棒了,谢谢 :) Nykakin 回答后我就明白了......我试图给它提供整数 【参考方案1】:

您可以使用VariableListPropery 更改代码中的填充。示例:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.textinput import TextInput
from kivy.properties import  VariableListProperty

class MyTextInput(TextInput):
    padding =  VariableListProperty(['24dp', '48dp'])

class MyApp(App):
    def build(self):
        return MyTextInput(text='This is an example text', multiline=False)

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

此代码需要 1.7 版本,如 documentation of the widget 中所述。我建议升级,因为我什至没有在任何地方看到任何 API 存档来检查它之前的设置方式。

【讨论】:

是的,VariableListsPRperty 是在 1.7 中引入的

以上是关于Kivy TextInput 和字体的主要内容,如果未能解决你的问题,请参考以下文章

无法在 KIVY Python 中打印取自 kivy.uix.textinput.TextInput 的文本

单击“TextInput”对象后在 Kivy 中重新获得键盘焦点

如何根据焦点设置 Kivy TextInput 背景颜色

在 Kivy 1.10 和 Python 2.7.9 中使用 ScreenManager 获取 TextInput 值

Kivy:如何在 kivy 中制作圆角 TextInput?

如何使用kivy将textinput转换为float并返回