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 1.10 和 Python 2.7.9 中使用 ScreenManager 获取 TextInput 值