
- 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 框架包含一個氣泡(Bubble)小部件,它是一個帶有箭頭的小型彈出選單,箭頭可以位於內容的任意一側。箭頭的方向可以根據需要進行配置。您可以透過設定其“arrow_pos”屬性的相對位置來放置它。
氣泡的內容放置在“BubbleContent”物件中,它是 BoxLayout 的一個子類。可以水平或垂直放置一個或多個 BubbleButtons。雖然建議使用 BubbleButtons,但您也可以在氣泡的內容中新增任何小部件。

Bubble、BubbleContent 和 BubbleButton 類在 kivy.uix.bubble 模組中定義。
from from kivy.uix.bubble import Bubble
Bubble 類的以下屬性有助於自定義氣泡選單的外觀和行為:
arrow_color - 箭頭顏色,格式為 (r, g, b, a)。要使用它,必須先設定 arrow_image,預設為 [1, 1, 1, 1]。
arrow_image - 指向氣泡的箭頭影像。
arrow_margin - 自動計算的箭頭小部件在 x 和 y 方向上佔據的邊距(以畫素為單位)。
arrow_pos - 指定箭頭的方向,選擇預定義值之一:left_top、left_mid、left_bottom、top_left、top_mid、top_right、right_top、right_mid、right_bottom、bottom_left、bottom_mid、bottom_right。預設值為 'bottom_mid'。
content - 這是儲存氣泡主要內容的物件。
show_arrow - 指示是否顯示箭頭。預設為 True。
BubbleButton - 用於 BubbleContent 小部件的按鈕。您可以使用“普通”按鈕代替它,但是除非更改背景,否則它可能看起來不太好。
BubbleContent - 一個經過樣式化的 BoxLayout,可以用作氣泡的內容小部件。
以下示意圖使用 “kv” 語言指令碼構建一個簡單的 Bubble 物件:
Bubble: BubbleContent: BubbleButton: text: 'Button 1' BubbleButton: text: 'Button 2'
與普通按鈕一樣,我們可以將 BubbleButton 繫結到其“on_press”事件的回撥函式。
示例
執行以下程式碼時,它會顯示一個普通按鈕。單擊時,會彈出一個帶有三個 BubbleButtons 的氣泡選單。每個 BubbleButtons 都呼叫一個 pressed() 回撥方法,該方法讀取按鈕的標題並在控制檯中列印它。
我們使用以下“kv”語言指令碼組裝氣泡選單。定義了一個名為“Choices”的類,它繼承自“kivy.uix.bubble.Bubble”類。
class Choices(Bubble): def pressed(self, obj): print ("I like ", obj.text) self.clear_widgets()
該類具有 pressed() 例項方法,由每個 BubbleButton 呼叫。
以下是“kv”指令碼:
<Choices> size_hint: (None, None) size: (300, 150) pos_hint: {'center_x': .5, 'y': .6} canvas: Color: rgb: (1,0,0) Rectangle: pos:self.pos size:self.size BubbleContent: BubbleButton: text: 'Cricket' size_hint_y: 1 on_press:root.pressed(self) BubbleButton: text: 'Tennis' size_hint_y: 1 on_press:root.pressed(self) BubbleButton: text: 'Hockey' size_hint_y: 1 on_press:root.pressed(self)
BoxLayout 小部件充當主應用程式視窗的根小部件,包含一個按鈕和一個標籤。“on_press”事件呼叫“show_bubble()”方法,該方法彈出氣泡。
class BubbleTest(FloatLayout): def __init__(self, **temp): super(BubbleTestApp, self).__init__(**temp) self.bubble_button = Button( text ='Your favourite Sport', pos_hint={'center_x':.5, 'center_y':.5}, size_hint=(.3, .1),size=(300, 100) ) self.bubble_button.bind(on_release = self.show_bubble) self.add_widget(self.bubble_button) def show_bubble(self, *arg): self.obj_bub = Choices() self.add_widget(self.obj_bub)
驅動程式 App 類程式碼如下:
from kivy.app import App from kivy.uix.floatlayout import FloatLayout from kivy.uix.button import Button from kivy.uix.label import Label from kivy.uix.bubble import Bubble from kivy.properties import ObjectProperty from kivy.core.window import Window Window.size = (720,400) class MybubbleApp(App): def build(self): return BubbleTest() MybubbleApp().run()
輸出
應用程式在主視窗的中心顯示一個按鈕。單擊時,您應該在它上面看到氣泡選單。

每次單擊氣泡中的任何選項時,控制檯都會顯示結果並隱藏氣泡。
I like Tennis I like Hockey