章节知识点总览
5.9 VKeyboard键盘
Vkeyboard是Kivy中的屏幕键盘,其主旨在于让操作步骤对用户是透明的,这里不建议直接使用该小部件。并且该虚拟键盘具有停靠和自由两种模式:
停靠模式(VKeyboard.docked=True):通常在只有私人使用该应用的情况下使用,例如,平板电脑或个人计算机等。
自由模式(VKeyboard.docked=False):通常用于多点触控表面,此模式允许在屏幕上使用多个虚拟键盘。
5.9.1 使用方法
如果对接模式发生更改,则需要手动调用VKeyboard.setup_mode()方法;否则更改不会产生影响。
实例:设置VKeyboard键盘使用方法
新建一个vkeyboard.py文件,其中添加一个键盘,具体代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.vkeyboard import VKeyboard
class VKeyboardTest(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
vk = VKeyboard()
vk.bind(on_key_up=self.key_up)
self.add_widget(vk)
def key_up(self,*args):
print("You have pressed the key is:",args[2])
class VKeyboardApp(App):
def build(self):
return VKeyboardTest()
if __name__ == '__main__':
from kivy.core.window import Window
Window.clearcolor = [.8,.8,.8,1]
VKeyboardApp().run()
运行vkeyboard.py文件,结果如下:
5.9.2 常用属性
VKeyboard键盘常用属性
属性 | 说明 |
font_size | 指定虚拟键盘按键上的文本大小,默认为20 |
background_color | 背景颜色,格式为rgba,如果设置了背景,则颜色将与背景纹理结合在一起,默认为[1,1,1,1] |
background_border | 背景图像边框,用于控制背景边框,默认为[16,16,16,16] |
docked | 指示VKeyboard是否固定在屏幕上,默认为False |
key_background_color | 按键背景颜色。格式为rgba,如果设置了按键背景颜色,则颜色与按键背景纹理组合在一起,默认为[1,1,1,1] |
key_border | 按键图像边框,用于控制按键边框的属性,默认为[16,16,16,16] |
key_margin | 按键边距,边距由4个值(以像素为单位)组成:[top,right,bottom,left] |
layout | 指定VKeyboard的布局,默认为None |
layout_path | 从中读取布局的路径,默认为:“<kivy_data_dir>/keyboards/” |
margin_hint | 键盘背景和按键内容之间的间隔,由0-1之间的4个值组成:[top,right,bottom,left],默认为[.5,.6,.5,.6] |
available_layouts | 所有可用布局的字典,键是布局ID,值是JSON,默认为{} |
target | 用于发送键盘事件,默认为None |
background | 背景图像,默认为:“kivy\tools\theming\defaulttheme\vkeyboard_background.png" |
background_disabled | 禁用VKeyboard时使用的背景图片,默认为”vkeyboard_disabled_background.png“ |
key_background_down | 键盘上的触摸处于活动状态时使用的按键背景图像的文件名,默认为”vkayboard_key_down.png“ |
key_background_normal | 窗口小部件上没有触摸时是哦那个的背景图像,默认为”vkeyboard_key_normal.png“ |
key_disabled_background_normal | 按键背景图像的文件名,当小部件上没有任何触摸处于活动那个状态并且禁用了VKeyboard时使用,默认为”vkeyboard_disabled_key_normal.png“ |
setup_mode(*largs) | 根据选项重新调整键盘 |
refresh(force=False) | 根据所选布局重新创建整个小部件和图形 |
collide_margin(x,y) | 进行碰撞测试,如果(x,y)在VKeyboard边缘内,则返回True |
setup_mode_dock(*largs) | 将键盘设置为停靠模式,不要直接调用此方法,在执行setup_mode()方法时使用 |
setup_mode_free | 将键盘设置为自由模式,不要直接调用此方法,在执行setup_mode()方法时使用 |
on_key_down | 当键盘收到按键事件(按下)时触发 |
on_key_up | 当键盘收到按键事件(释放)时触发 |
callback | 将回调设置为用户关闭VKeyboard时将调用的函数,默认为None |