《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——TextInput输入框

编程入门 行业动态 更新时间:2024-10-24 22:18:27

《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX<a href=https://www.elefans.com/category/jswz/34/1762955.html style=部件——TextInput输入框"/>

《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——TextInput输入框

章节知识点总揽

4.4 TextInput输入框

        Kivy中的TextInput控件提供了可以编辑的纯文本框,支持Unicode编码、多行、光标导航、选择和剪切板等多种功能。

4.4.1 使用方法

        在.py内使用: 需要导入TextInput类,通过TextInput类生成一个文本框,并设置相关样式,再通过add_widget()方法添加到布局中即可,关键代码如下: 

from kivy.uix.textinput import TextInput        #引入控件
ti = TextInput(text='copy')                 #指定属性
self.add_widget(ti)                             #添加到布局

新建main.py文件,内容如下:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInputclass FloatLayoutWidget(FloatLayout):def __init__(self,**kwargs):super().__init__(**kwargs)ti = TextInput(text='copy')self.add_widget(ti)class TextInputApp(App):def build(self):return FloatLayoutWidget()if __name__ == '__main__':TextInputApp().run()

        相比之下,在.kv文件中实现就非常简单,无需引入即可使用。关键代码如下: 

TextInput:                    #添加一个文本框text:'cocpy'          #显示的文本

4.4.2 常用属性

        在Kivy中,为了方便设置TextInput输入值的样式,Kivy提供了大量的属性,关于TextInput的常用属性及说明如下表所示:

TextInput常用属性

属性说明
text文本内容
text_lauguage文本语言,例如:zh_CN、en_US、fr和ja
halign文本的水平对齐方式,可设置为auto(默认)、left、center和right等属性
multiline是否显示多行文本,默认属性为True
allow_copy是否允许复制文本,默认属性为True
auto_indent自动缩进多行文字,默认属性为False
font_size文本的字体大小,以像素为单位,默认为15sp
foreground_color前景颜色,格式为rgba,默认属性为[0,0,0,1]
minimum_height文本框内容的最小高度
password是否用password_mask替换显示的密码,默认为False
password_mask在password为True时使用,默认以“*”替换显示的密码
readonly是否将文本框属性设置为只读,默认为False
background_color背景颜色,格式为rgba,默认为白色[1,1,1,1]
padding_x文本的水平填充,格式为[padding_left,padding_right]或[padding_horizontal],默认为[0,0]
padding_y文本的垂直填充,格式为[padding_top,padding_bottom]或[padding_vertical],默认为[0,0]
padding文本填充,格式为[padding_left,padding_top,padding_right,padding_bottom]或[padding_horizontal,padding_vertical]或[padding],默认属性为[6,6,6,6]
hint_text提示文本,默认为空字符串
hint_text_colorhint_text文本的当前颜色,格式为rgba,默认为灰色[0.5,0.5,.5,1]
input_filter过滤输入,默认为None
paste()插入剪切板的内容到当前光标位置
write_tab使用tab键将移至下一个小部件;否则将进入文本框,默认为True
background_active默认为“kivy\tools\theming\defaulttheme\textinput_active.png”属性
background_disabled_normal禁用TextInput时的背景图像,默认为“textinput_disabled.png”属性
background_normalTextInput不在焦点上时的背景图像,默认为“textinput.png”属性
handle_image_left在待处理的文本框左侧显示的图像,默认为“selector_left.png”属性
handle_image_middle在待处理的文本框中间显示的图像,默认为'selector_middle.png'属性
handle_image_right在待处理的文本框右侧显示的图像,默认为"selector_right"属性
replace_crlf用LF自动替换CRLF
select_all选中文本框显示的所有文本
selection_color所选内容的当前颜色,格式为rgba,默认为[0.1843,0.6549,0.8313,.5]
selection_from选择开始的光标索引,默认为None,为只读属性
selection_to选择结束的光标索引,默认为None,为只读属性
selection_text当前选择的内容,默认为空字符串,为只读属性
suggestion_text当前行的末尾显示建议文本
tab_width将tab替换为指定数量的空格,默认为4
select_text(start,end)选中文本框显示的部分文本
base_direction文本的基本方向,可设置为None(默认)、ltr、rtl、weak_ltr、weak_rtl(r即right,t即to,l即left)
border边框,默认属性为(4,4,4,4)
cancel_selection取消当前的选择
use_bubble是否使用剪切/复制/粘贴气泡,在0移动设备上默认为True;其他默认为False
use_handles是否显示选择指示,在移动设备上默认为True;其他默认为False
copy(data='')将提供的值复制到剪切板中
cursor当前光标位置
cursor_blink光标是否闪烁,默认为True
cursor_col光标的当前列,为只读属性
cursor_row光标的当前行,为只读属性
cursor_color光标的当前颜色,格式为rgba,默认属性为[1,0,0,1]
cursor_index(cursor=None)返回文本/值中的光标索引
cursor_offset()获取当前行上的光标偏移量
cursor_pos光标的当前位置,以(x,y)为单位 ,只读属性
cursor_width

光标的当前宽度,默认为“1sp”

cut()将当前选择剪切到前贴板
keyboard_suggestions在键盘上方是否提供建议输入,默认为True,设置input_type属性后才会生效
line_height计算一行文本的最小高度,为只读属性
line_spacing线条之间的空间,默认为0
on_double_tap()双击文本框触发该事件
on_triple_tap()三击文本框触发该事件
on_quad_touch()在文本框内部四指触摸事件
do_redo()重新执行do_undo/<Ctrl+z>取消的所有命令,快捷键为<Ctrl+R>
do_undo()进行撤销操作,快捷键为<Ctrl+Z>
reset_undo()从内存中重置撤销和重做列表
font_context字体中的上下文
font_family字体系列,仅在使用font_context选项时适用
scroll_x窗口的X方向滚动值,默认为0
scroll_y窗口的Y方向滚动值,默认为0
text_validate_unfocus停止监听键盘,默认为True
get_cursor_from_xy(x,y)从(x,y)位置返回光标的(行,列)
get_cursor_from_index(index)从文本索引返回光标的(行,列)
delete_selection(from_undo=False)删除当前选择的文本
disabled_foreground_color禁用时前景的颜色,格式为rgba,默认为[0,0,0,5]
do_backspace(from_undo=False,mode='bkspc')从当前位置执行删除操作
do_cursor_movement(action,control=False,alt=False)相对于当前位置移动光标
insert_text(substring,from_undo=False)在当前光标位置插入新文本
keyboard_on_key_down(window,keycode,text,modifiers)将焦点实时绑定到键盘,在每次输入时都会调用(类似于press)
keyboard_on_key_up(window,keycode)将焦点实时绑定到键盘,在每次什邡市都会调用(类似release)

        注意:所有和tab相关的属性,运行失败,尝试改为tap,不确定哪个是对的。下文代码中个别使用tap是正确的,但没有测试全部属性。

实例:设置TextInput输入框的常用属性

        新建一个用widget布局的main.py文件,用来加载.kv文件,具体代码如下:

from kivy.app import App
from kivy.uix.widget import Widgetclass TextInputWidget(Widget):def  __init__(self,**kwargs):super().__init__(**kwargs)class TextInputApp(App):def build(self):return TextInputWidget()if __name__ == '__main__':TextInputApp().run()

        根据main.py中TextInputApp()类,新建textinput.kv文件,首先设置布局为白色背景,再设置上表中的部分属性(文件中设置了不可复制、背景颜色、只读、居中等属性),具体内容如下: 

<TextInputWidget>:canvas:Color:rgba:[1,1,1,1]Rectangle:pos:self.possize:self.sizeTextInput:text:'c0c,ink'multiline:Falsepos:400,380allow_copy:FalseTextInput:text:'cocpy'pos:100,180halign:'center'background_color:100,2,2,1TextInput:text:'first'pos:400,180readonly:True

        运行main.py文件,结果如图

 4.4.3 触发事件

        在使用TextInput输入框时,通常情况下需要使用以下几个触发事件:

                on_text_validate:选中,按<Enter>键的时候触发该事件

                on_text:文本改变的时候触发该事件

                on_double_tap:双击触发该事件

                on_trible_tap:三击触发该事件

                on_quad_touch:四指触摸时触发该事件

        实例:设置TextInput输入框的触发事件

        在上面实例的基础上,设置几个触发事件,具体代码如下:

        注意:这里为了观察,所以直接更改了位置,当然也可以在.py里添加相关方法,并在.kv文件内通过root.方法调用

        main.py文件不变

        textinput.kv文件内容如下: 

<TextInputWidget>:canvas:Color:rgba:[1,1,1,1]Rectangle:pos:self.possize:self.sizeTextInput:text:'c0c,ink'multiline:Falsepos:400,380allow_copy:Falseon_text_validate:self.pos=[self.x,self.y-5]TextInput:text:'cocpy'pos:100,180halign:'center'background_color:100,2,2,1on_text:self.pos=[self.x+5,self.y]TextInput:text:'first'pos:400,180readonly:Trueon_double_tap:self.pos=[self.x-5,self.y]on_triple_tap:self.pos=[self.x,self.y+5]on_quad_touch:self.pos=[400,180]

        运行mian.py结果如下图:

        讲一个实用的属性:scroll_y属性,可以实现文本行数过多后,自由向上滚动翻阅,同理,scroll_x属性可以实现左右自动滚动翻阅功能。

        其属性是一个整数,也可以时布尔值。在.py文件中用scroll_y=True或scroll_y=5,在.kv文件中则将'='用':'代替:scroll:True或scroll:5

测试例子:

from kivy.app import App
from kivy.uix.textinput import TextInputclass MyApp(App):def build(self):textinput = TextInput(text="This is a multiline\nTextInput widget.",multiline=True,scroll_y=5)return textinputif __name__ == '__main__':MyApp().run()

 

上一篇:简单UX部件——Image图片

下一篇:简单UX部件——CheckBox复选框

更多推荐

《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——TextInput输入框

本文发布于:2024-02-25 20:36:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1700225.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:部件   输入框   入门   简单   笔记

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!