- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用程式
- Kivy - Hello World
- Kivy - 應用生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 元件
- Kivy - 元件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 走馬燈
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 微調器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤頁面板
- Kivy - 散佈
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色選擇器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 相機
- Kivy - 樹形檢視
- Kivy - reStructuredText
- Kivy - 操作欄
- Kivy - 播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控漣漪
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入記錄器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 盒佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 頁面佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具函式
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 虛擬鍵盤
Kivy 庫中的 VKeyboard 元件對於在多點觸控裝置(如智慧手機和平板電腦)上執行的應用程式特別有用。VKeyboard 是一個螢幕鍵盤。其操作旨在對使用者透明。
VKeyboard 以兩種模式使用 - **停靠**和**自由模式**。自由模式適用於多點觸控裝置,而停靠模式在使用類似平板電腦的計算機時啟用。
VKeyboard 類在 kivy.uix.vkeyboard 模組中定義。
from kivy.uix.vkeyboard import VKeyboard kb = VKeyboard(**kwargs)
虛擬鍵盤永遠不會直接使用。相反,它由配置控制。如果應用程式有任何需要鍵盤的小部件(例如 TextInput),請不要直接使用虛擬鍵盤,而是首選在平臺上可用的最佳方法。
VKeyboard 類繼承自 ScatterLayout。虛擬鍵盤小部件右下角的按鈕允許您在可用佈局之間切換。
VKeyboard 物件具有以下屬性 -
available_layouts - 所有可用佈局的字典。鍵是佈局 ID,值是 JSON,預設為 {}。
callback - 回撥可以設定為一個函式,如果使用者關閉 VKeyboard,則會呼叫該函式。
docked - 指示 VKeyboard 是否停靠在螢幕上。如果更改它,則必須手動呼叫 setup_mode(),否則它將不起作用。
key_margin - 鍵邊距,用於在鍵之間建立間距。邊距由四個值組成,以畫素為單位 -
key_margin = [top, right, bottom, left]
key_margin 預設為 [2, 2, 2, 2]
target - 與 VKeyboard 關聯的目標小部件。如果設定,它將用於傳送鍵盤事件。
示例
在以下示例中,一列網格佈局的初始構成顯示了一個標籤和一個 TextInput 小部件。當用戶透過點選文字框內部生成 touch_down 事件時,一個 VKeyboard 小部件將新增到佈局中。
def ontouch(self, instance, value):
self.kb = VKeyboard(
on_key_up = self.vkbinput,
pos_hint={'center_x':.5},
size_hint=(.8, None)
)
self.layout.add_widget(self.kb)
當按下鍵盤上的任何鍵時,它會生成 on_key_up 事件。它繫結到 vkbinput() 方法。此方法讀取按下鍵的鍵碼並更新文字框的內容。
def vkbinput(self, keyboard, keycode, *args):
text = self.text1.text
if keycode == '~':
self.layout.remove_widget(self.kb)
return
self.text1.text = f'{text}{keycode}'
每當使用者按下“~”鍵時,鍵盤小部件就會從佈局中移除。
下面給出**完整程式碼** -
from kivy.app import App
from kivy.uix.vkeyboard import VKeyboard
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.core.window import Window
Window.size = (720, 400)
class MainApp(App):
def build(self):
self.layout = GridLayout(cols=1)
self.text1 = TextInput(
font_size=32,
on_touch_down=self.ontouch
)
self.label = Label(
text="Enter Text....",
font_size=32,
color=[.8, .6, .1]
)
self.layout.add_widget(self.label)
self.layout.add_widget(self.text1)
return self.layout
def ontouch(self, instance, value):
self.kb = VKeyboard(
on_key_up=self.vkbinput,
pos_hint={'center_x': .5},
size_hint=(.8, None)
)
self.layout.add_widget(self.kb)
def vkbinput(self, keyboard, keycode, *args):
text = self.text1.text
if keycode == '~':
self.layout.remove_widget(self.kb)
return
self.text1.text = f'{text}{keycode}'
MainApp().run()
輸出
當上述程式碼執行時,應用視窗的初始顯示如下 -
點選文字框內部,虛擬鍵盤將出現在其下方 -
您現在可以輸入文字。按“~”刪除鍵盤。