Kivy的ButtonBehavior學習

Kivy的ButtonBehavior學習

  • ButtonBehavior 簡介
    • 1、主要特點
    • 2、基本用法
    • 3、主要事件
    • 4、常用屬性
    • 5、方法
    • 代碼示例

文檔:https://kivy.org/doc/stable/api-kivy.uix.behaviors.button.html#kivy.uix.behaviors.button.ButtonBehavior

ButtonBehavior 簡介

ButtonBehavior 是 Kivy 框架中的一個行為類,用于為其他小部件添加按鈕式的交互功能。

1、主要特點

  1. 非可視化組件:ButtonBehavior 本身不提供任何視覺元素,它只是添加按鈕交互邏輯
  2. 混合使用:可以與其他小部件類一起多重繼承,使任何小部件具有按鈕行為
  3. 事件處理:自動處理常見的觸摸/點擊事件

2、基本用法

from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Imageclass ImageButton(ButtonBehavior, Image):def on_press(self):print("圖片按鈕被按下")def on_release(self):print("圖片按鈕被釋放")

3、主要事件

  • on_press(): 當按鈕被按下時觸發
  • on_release(): 當按鈕被釋放時觸發
  • on_state(): 當按鈕狀態改變時觸發(正常/按下)

4、常用屬性

  • state: 按鈕的當前狀態(‘normal’ 或 ‘down’)
  • always_release: 布爾值,決定是否總是觸發釋放事件,默認是false,也就是按鈕按鈕后移動到按鈕外面釋放,不會調用on_release,但是state還是會改變
  • last_touch:最后一次觸碰按鈕的事件
  • min_state_time:The minimum period of time which the widget must remain in the ‘down’ state.但是我沒有驗證成功。

5、方法

  • trigger_action(duration=0.1) 代碼調用按下按鈕,duration是按下的時間

ButtonBehavior 使得開發者可以輕松地為任何小部件添加按鈕交互功能,而不必從頭開始實現所有觸摸事件處理邏輯。

代碼示例

from kivy.app import App
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.properties import StringProperty
# 修改全局默認值示例
from kivy.config import Config
Config.set('graphics', 'min_state_time', '50')
# 在創建窗口前設置
Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
from kivy.clock import Clock
# 創建自定義圖像按鈕類
class ImageButton(ButtonBehavior, Image):# 定義兩個圖像路徑屬性,用于按鈕的不同狀態normal_image = StringProperty('1.png')pressed_image = StringProperty('2.png')def __init__(self, **kwargs):super(ImageButton, self).__init__(**kwargs)self.source = self.normal_imagedef on_press(self):# 按鈕按下時切換圖像self.source = self.pressed_imageprint(f"on_press 按鈕 {self.state}!")print(f"on_press 按鈕 {self.last_touch}!")print(f"on_press 按鈕 {self.min_state_time}!")def on_release(self):# 按鈕釋放時恢復原圖像self.source = self.normal_imageprint(f"on_release 按鈕 {self.state}!")print(f"on_release 按鈕 {self.last_touch}!")print(f"on_release 按鈕 {self.min_state_time}!")print(f"按鈕 {self} 被點擊!")def on_state(self, instance, value):# always_release默認是false,在按鈕上按下,在按鈕的外面松開,# 不會調用on_release,但是on_state還是會改變print(f"on_state 按鈕 {self.state}!")# 主應用類
class ButtonBehaviorDemo(App):def build(self):# 加載KV語言self.nn= ImageButton()        Clock.schedule_once(ss.tr, 3) # 延時3秒后調用btn2 = Button(text='World',background_normal='2.png',background_down='1.png')box = BoxLayout()box.add_widget(self.nn)box.add_widget(btn2)return boxdef tr(self, dt):print(dt)self.nn.trigger_action(3) # 代碼觸動按下,按下時間為3s# 運行應用
if __name__ == '__main__':ss = ButtonBehaviorDemo()ss.run()

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84613.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPS中將在線鏈接轉為圖片

WPS中將在線鏈接轉為圖片 文章目錄 WPS中將在線鏈接轉為圖片一:解決方案1、下載圖片,精確匹配(會員功能)2、將在線鏈接直接轉為圖片 一:解決方案 1、下載圖片,精確匹配(會員功能) …

API:解鎖數字化協作的鑰匙及開放實現路徑深度剖析

API:解鎖數字化協作的鑰匙及開放實現路徑深度剖析 一、API 的概念與本質 (一)定義與基本原理 API(Application Programming Interface,應用程序編程接口)是一組定義、協議和工具,用于構建和集成軟件應用程序。它如同一個精心設計的合約,詳細規定了軟件組件之間相互交…

Azure 虛擬機端口資源:專用 IP 和公共 IP Azure Machine Learning 計算實例BUG

## 報錯無解 找不到Azure ML 計算實例關聯的 NSG .env 文件和 ufw status: .env 文件中 EXPOSE_NGINX_PORT8080 是正確的,它告訴 docker-compose.yaml 將 Nginx 暴露在宿主機的 8080 端口。 sudo ufw status 顯示 Status: inactive,意味著宿…

深入理解Python協程:async def、async for、await、yield詳解

前言 在現代編程中,異步編程已成為提高程序效率和性能的重要方式。 Python 作為一種流行的編程語言,自然也提供了強大的異步編程支持。 本文將詳細介紹 Python 中的協程,以及 async def、async for、await 和 yield 等關鍵字的使用。 協程簡介…

基于功能基團的3D分子生成擴散模型 - D3FG 評測

D3FG 是一個在口袋中基于功能團的3D分子生成擴散模型。與通常分子生成模型直接生成分子坐標和原子類型不同,D3FG 將分子分解為兩類組成部分:官能團和連接體,然后使用擴散生成模型學習這些組成部分的類型和幾何分布。 一、背景介紹 D3FG 來源…

寫一個shell腳本,把局域網內,把能ping通的IP和不能ping通的IP分類,并保存到兩個文本文件里

寫一個shell腳本&#xff0c;把局域網內&#xff0c;把能ping通的IP和不能ping通的IP分類&#xff0c;并保存到兩個文本文件里 腳本1 #!/bin/bash #定義變量 ip10.1.1 #循環去ping主機的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…

如何提升企微CRM系統數據的準確性?5大核心策略詳解

在數字化客戶管理時代&#xff0c;企微CRM管理系統已成為企業連接客戶的核心平臺。但據統計&#xff0c;73%的企業因數據質量問題導致客戶分析失真、營銷效果下降。本文將深入解析影響數據準確性的關鍵因素&#xff0c;并提供可落地的優化方案&#xff0c;幫助企業在企微CRM軟件…

Unity輕松實現麥克風錄音與播放

文章目錄 概要錄音&#xff0c;播放音頻注意事項參考 概要 之前有想寫一個音樂播放的器的音頻功能&#xff0c;一直沒做&#xff0c;最近突然想寫&#xff0c;就寫了 錄音&#xff0c;播放 在語言模型中&#xff0c;編碼器和解碼器都是由一個個的 Transformer 組件拼接在一起…

七牛云圖片上傳 前后端全過程

相關網址&#xff1a;七牛開發者中心 相關網站&#xff1a; 七牛開發者中心 上傳流程概述 后端生成上傳憑證&#xff1a;服務器端使用七牛云 SDK 生成上傳憑證&#xff08;uptoken&#xff09;前端獲取憑證&#xff1a;前端通過 API 向后端請求上傳憑證前端上傳圖片&#xff1…

2025年AI生成PPT平臺推薦榜單:五大智能工具革新演示創作體驗

在數字化辦公飛速發展的當下&#xff0c;AI生成PPT平臺已成為職場人士、教育工作者和創意人群提升效率的利器。這些平臺憑借先進的人工智能技術&#xff0c;打破傳統PPT制作的局限&#xff0c;為用戶帶來便捷、高效且充滿創意的制作體驗。經過多維度測評&#xff0c;2025年AI生…

PHP框架在內容管理系統開發中的優勢:效率、安全與擴展性!

在當今快節奏的Web開發環境中&#xff0c;內容管理系統&#xff08;CMS&#xff09;已成為企業和個人建立動態網站的核心工具。傳統的手工編碼開發方式在面對復雜業務邏輯、頻繁迭代和安全要求時往往力不從心。而PHP框架&#xff08;如Laravel、ThinkPHP、Symfony&#xff09;的…

云原生安全實踐:CI/CD流水線集成DAST工具

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 ——從零掌握DevSecOps中的動態安全測試 一、基礎概念 1. DevSecOps DevSecOps 是將安全性&#xff08;Security&#xff09;融入開發&#xff08;Dev&am…

【C語言】基礎知識框架補充

前文主要介紹了C語言從零開始學習的基本框架與基礎知識導覽&#xff0c;本文主要補充此前未提及的學習內容&#xff0c;給有意精進C語言者指明一條可供參考的學習路徑。 補充一&#xff1a;動態內存管理 核心函數&#xff08;需#include <stdlib.h>&#xff09;&#xf…

垃圾識別檢測與分類數據集(貓臉碼客第244期)

目標檢測與垃圾&#xff1a;技術革新與環境管理的交匯點 在當今社會&#xff0c;城市化進程不斷加速&#xff0c;人口持續增長&#xff0c;垃圾處理問題愈發凸顯其重要性。有效管理垃圾&#xff0c;不僅關乎環境衛生狀況&#xff0c;更直接影響到城市的可持續發展以及居民的生…

【調研報告】2025年與2030年AI及AI智能體 (Agent) 市場份額分析報告

2025年與2030年AI及AI智能體 (Agent) 市場份額分析報告 摘要 本報告旨在深入分析全球人工智能&#xff08;AI&#xff09;市場及其子領域AI智能體的未來發展軌跡&#xff0c;重點關注其在2025年和2030年的市場規模及其占全球GDP和整體AI市場的比例。分析表明&#xff0c;AI市…

臺式機電腦CPU天梯圖2025年6月份更新:CPU選購指南及推薦

組裝電腦選硬件的過程中,CPU的選擇無疑是最關鍵的,因為它是最核心的硬件,關乎著一臺電腦的性能好壞。對于小白來說,CPU天梯圖方便直接判斷兩款CPU性能高低,準確的說,是多核性能。下面給大家分享一下臺式機電腦CPU天梯圖2025年6月版,來看看吧。 桌面CPU性能排行榜2025 臺…

小白學Pinia狀態管理

目錄 1. 什么是 Pinia&#xff1f; 2. 為什么需要 Pinia&#xff1f; 3. Pinia 的三個核心概念 State&#xff08;狀態&#xff09;- 存儲數據 Getters&#xff08;計算屬性&#xff09;- 處理數據 Actions&#xff08;方法&#xff09;- 修改數據 4. 創建一個簡單的 St…

Tauri2學習筆記

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程視頻不多&#xff0c;我按照Tauri1的教程來學習&…

SQL進階之旅 Day 26:分庫分表環境中的SQL策略

【SQL進階之旅 Day 26】分庫分表環境中的SQL策略 文章簡述 隨著業務規模的擴大&#xff0c;單一數據庫難以承載海量數據與高并發訪問。分庫分表成為解決這一問題的關鍵手段&#xff0c;但同時也帶來了 SQL 查詢復雜度的顯著提升。本文作為“SQL進階之旅”系列的第26天內容&…

linux之 內存管理(6)-arm64 內核虛擬地址空間變化

一、新內核變動 kernel變化的真快&#xff0c;之前我記得4.x的內核的內核空間的線性映射區位于內核空間的高地址處的128TB&#xff0c;且當前的博客和一些書籍也都還是這樣介紹。可翻了翻kernel的Documentation/arm64/memory.rst文檔&#xff0c;發現最新的kernel已將這128TB移…