
- 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 - Box 佈局
- 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 - Box 佈局
Kivy 框架提供 BoxLayout 類,我們可以用它來依次排列元件。排列順序由 BoxLayout 物件的 orientation 屬性決定,可以是字串:'vertical' 或 'horizontal'。
BoxLayout 類在 "kivy.uix.boxlayout" 模組中定義。要宣告一個 BoxLayout 物件,請使用。
from kivy.uix.boxlayout import BoxLayout blo = BoxLayout(**kwargs)
屬性
orientation − 佈局方向。orientation 是一個 OptionProperty,預設為 'horizontal'。可以是 'vertical' 或 'horizontal'。
padding − 佈局框與子元件之間的填充:[padding_left, padding_top, padding_right, padding_bottom]。padding 也接受兩個引數的形式 [padding_horizontal, padding_vertical] 和一個引數的形式 [padding]。
minimum_height − 自動計算包含所有子元件所需的最小高度。minimum_height 是一個 NumericProperty,預設為 0。它是隻讀的。
minimum_size − 自動計算包含所有子元件所需的最小尺寸。minimum_size 是 (minimum_width, minimum_height) 屬性的 ReferenceListProperty。它是隻讀的。
minimum_width − 自動計算包含所有子元件所需的最小寬度。minimum_width 是一個 NumericProperty,預設為 0。它是隻讀的。


BoxLayout 類還繼承了 add_widget() 和 remove_widget() 方法,我們之前已經討論過這些方法。
垂直 BoxLayout
此處顯示了 BoxLayout 的典型用法。我們在垂直 Box 佈局中添加了一個標籤、一個文字輸入框和一個按鈕。
示例
from kivy.app import App from kivy.uix.label import Label from kivy.uix.button import Button from kivy.uix.textinput import TextInput from kivy.uix.boxlayout import BoxLayout from kivy.core.window import Window Window.size = (720,200) class DemoApp(App): def build(self): lo = BoxLayout(orientation = 'vertical') self.l1 = Label(text='Enter your name', font_size=20) self.t1 = TextInput(font_size = 30) self.b1 = Button(text = 'Submit', size_hint = (None, None),pos_hint={'x':.4, 'y':.2}, size = (200,75)) lo.add_widget(self.l1) lo.add_widget(self.t1) lo.add_widget(self.b1) return lo if __name__ == '__main__': DemoApp().run()
輸出
它將產生以下輸出:

您可以使用以下 "Demo.kv" 檔案構建上述 GUI:
BoxLayout: orientation : 'vertical' Label: id : l1 text : 'Enter your name' font_size : '20pt' TextInput: id : t1 font_size : 30 Button: id : b1 text : 'Submit' size_hint : (None, None) pos_hint : {'x':.4, 'y':.2} size : (200,75)
水平 BoxLayout
在以下程式中,我們將標籤、文字輸入框和按鈕放置在方向為水平的 Box 佈局中。
示例
from kivy.app import App from kivy.uix.label import Label from kivy.uix.button import Button from kivy.uix.textinput import TextInput from kivy.uix.boxlayout import BoxLayout from kivy.clock import Clock from kivy.core.window import Window Window.size = (720,200) class DemoApp(App): def build(self): self.lo = BoxLayout(orientation = 'horizontal') self.l1 = Label(text='Enter your name', font_size=20) self.t1 = TextInput(font_size = 30, pos_hint={'y':0.25}, pos = (0,100), size_hint = (None, None), size = (650,100)) self.b1 = Button(text = 'Submit', size_hint = (None, None),pos_hint={'x':.4, 'y':.35}, size = (75, 40)) self.lo.add_widget(self.l1) self.lo.add_widget(self.t1) self.lo.add_widget(self.b1) return self.lo if __name__ == '__main__': DemoApp().run()
輸出
它將產生以下輸出:

您可以使用以下 "Demo.kv" 檔案獲得相同的 GUI 設計:
BoxLayout: orientation : 'horizontal' Label: text : 'Enter your name' font_size : '20pt' TextInput : font_size : '30pt' pos_hint : {'y':0.25} pos : (0,100) size_hint : (None, None) size : (650,100) Button : text : 'Submit' size_hint : (None, None) pos_hint : {'x':.4, 'y':.35} size : (75, 40)