
- 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 - 相對佈局
相對佈局的行為與浮動佈局非常相似。兩者主要區別在於,相對佈局中子元件的位置座標是相對於佈局大小的,而不是像浮動佈局那樣相對於視窗大小。
為了理解這意味著什麼,請考慮以下使用 FloatLayout 設計的 UI。

當您調整視窗大小時,由於浮動佈局中的絕對定位,元件的位置與調整後的視窗不成比例。結果,介面設計不一致。

相對佈局沒有這種效果,因為元件的大小和位置是相對於佈局的。
當將位置為 (0,0) 的元件新增到 RelativeLayout 時,如果 RelativeLayout 的位置發生變化,子元件也會移動。子元件的座標始終相對於父佈局。
RelativeLayout 類定義在 "kivy.uix.relativelayout" 模組中。
from kivy.uix.relativelayout import RelativeLayout rlo = RelativeLayout(**kwargs)
示例
以下程式碼在 RelativeLayout 中組合標籤、文字框和提交按鈕。
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.relativelayout import RelativeLayout from kivy.core.window import Window Window.size = (720, 400) class RelDemoApp(App): def build(self): rlo = RelativeLayout() l1 = Label( text="Name", size_hint=(.2, .1), pos_hint={'x': .2, 'y': .75} ) rlo.add_widget(l1) t1 = TextInput( size_hint=(.4, .1), pos_hint={'x': .3, 'y': .65} ) rlo.add_widget(t1) l2 = Label( text="Address", size_hint=(.2, .1), pos_hint={'x': .2, 'y': .55} ) rlo.add_widget(l2) t2 = TextInput( multiline=True, size_hint=(.4, .1), pos_hint={'x': .3, 'y': .45} ) rlo.add_widget(t2) l3 = Label( text="College", size_hint=(.2, .1), pos_hint={'x': .2, 'y': .35} ) rlo.add_widget(l3) t3 = TextInput( size_hint=(.4, .1), pos=(400, 150), pos_hint={'x': .3, 'y': .25} ) rlo.add_widget(t3) b1 = Button( text='Submit', size_hint=(.2, .1), pos_hint={'center_x': .5, 'center_y': .09} ) rlo.add_widget(b1) return rlo RelDemoApp().run()
輸出
執行以上程式碼後,應用程式視窗將顯示如下 UI:

請注意,與 FloatLayout 不同,調整視窗大小不會改變元件的比例大小和位置。

"kv" 設計語言指令碼
用於生成上述 UI 的 "kv" 檔案(而不是 App 類中的 build() 方法)如下:
RelativeLayout: Label: text:"Name" size_hint:(.2, .1) pos_hint:{'x':.2, 'y':.75} TextInput: size_hint:(.4, .1) pos_hint:{'x':.3, 'y':.65} Label: text:"Address" size_hint:(.2, .1) pos_hint:{'x':.2, 'y':.55} TextInput: multiline:True size_hint:(.4, .1) pos_hint:{'x':.3, 'y':.45} Label: text:"College" size_hint:(.2, .1) pos_hint:{'x':.2, 'y':.35} TextInput: size_hint:(.4, .1) pos:(400, 150) pos_hint:{'x':.3, 'y':.25} Button: text:'Submit' size_hint : (.2, .1) pos_hint : {'center_x':.5, 'center_y':.09}
廣告