- 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 - Garden
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具函式
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 多筆畫手勢
在 Kivy 中,多筆畫手勢是由多個手勢物件組成的集合。一個手勢包含單個筆畫,該筆畫由“touch_down”和“touch_up”事件之間的觸控點列表構成。多筆畫手勢是此類筆畫的集合。
“kivy.multistroke”模組實現了量角器手勢識別演算法。此模組中定義的兩個重要類是MultistrokeGesture和Recognizer。
MultiStrokeGesture 類維護一組筆畫,並生成單筆畫(即 UnistrokeTemplate)排列,這些排列稍後用於評估針對此手勢的候選物件。
可以使用以下語法獲得 MultriStroke 物件:
from kivy.vector import Vector
from kivy.multistroke import MultistrokeGesture
gesture = MultistrokeGesture('my_gesture', strokes=[
[Vector(x1, y1), Vector(x2, y2), ...... ], # stroke 1
[Vector(), Vector(), Vector(), Vector() ] # stroke 2
#, [stroke 3], [stroke 4], ...
])
即使所有筆畫都組合到單個列表(單筆畫)中,您仍然應該單獨指定筆畫,並將 stroke_sensitive 屬性設定為 True。
Recognizer 儲存 MultistrokeGesture 物件列表。它類似於 GestureDatabase 的搜尋/資料庫 API。它維護一個列表,並允許您在其間搜尋使用者輸入的手勢。
Recognizer 資料庫是 UnistrokeTemplate 物件的容器,並實現堆排列演算法以自動生成所有可能的筆畫順序。
Candidate 類的物件表示使用者輸入的一組單筆畫路徑。呼叫 Recognizer.recognize() 時會自動例項化此物件。
from kivy.vector import Vector from kivy.multistroke import Recognizer gdb = Recognizer() gdb.recognize([ [Vector(x1, y1), Vector(x2, y2)], [Vector(x3, y3), Vector(x4, y4)]])
Recognizer 物件能夠生成以下事件:
on_search_start - 使用此 Recognizer 啟動新搜尋時觸發。
on_search_complete - 執行中的搜尋結束時觸發,無論出於何種原因。
這些事件可以對映到回撥函式,以跟蹤 Recognizer.recognize() 方法執行的搜尋操作的進度。
gdb.bind(on_search_start=search_start) gdb.bind(on_search_complete=search_stop)
回撥方法示例如下:
def search_start(gdb, pt):
print("A search is starting with {} tasks".format(pt.tasks))
def search_stop(gdb, pt):
best = pt.best
print("Search ended {}. Best is {} (score {}, distance {})".format(
pt.status, best['name'], best['score'], best['dist'] ))
最後,“kivy.multistroke”模組還提供了一個 ProgressTracker 類。它表示正在進行(或已完成)的搜尋操作。
呼叫 Recognizer.recognize() 方法時,會自動例項化跟蹤器物件並將其返回。results 屬性是一個字典,會在識別操作進行時更新。
progress = gdb.recognize([ [Vector(x1, y1), Vector(x2, y2)], [Vector(x3, y3), Vector(x4, y4)]]) progress.bind(on_progress=my_other_callback) print(progress.progress) # = 0 print(result.progress) # = 1
您可以使用 export_gesture() 函式將多筆畫手勢儲存到檔案中。
export_gesture(filename=None) - 它將 MultistrokeGesture 物件列表匯出到 base64 編碼的字串,該字串可以使用 parse_gesture() 函式解碼為 Python 列表。它也可以使用 Recognizer.import_gesture() 直接匯入到資料庫中。如果指定了 filename,則輸出將寫入磁碟。
import_gesture(data=None,filename=None) - import_gesture() 函式將手勢引入 Recognizer 資料庫。使用此函式匯入 export_gesture() 格式化的列表手勢。必須指定 data 或 filename 引數。此方法接受可選的 Recognizer.filter() 引數,如果沒有指定引數,則匯入指定資料中的所有手勢。