- 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 中的 PageLayout 類與 Kivy 中的其他容器元件略有不同。使用 PageLayout,您可以建立一個簡單的多頁面佈局,以便可以透過邊框輕鬆地在頁面之間翻轉。
頁面之間的過渡是透過從右側或左側的邊框區域向內滑動完成的。由於 PageLayout 不支援 size_hint、size_hint_min、size_hint_max 或 pos_hint 屬性,因此每個頁面只能顯示一個元件。但是,您可以透過將複合佈局物件(如箱式佈局、網格佈局或浮動佈局)放在單個頁面中,在頁面中放置多個元件。
PageLayout 類在“kivy.uix.pagelayout”模組中定義。
from kivy.uix.pagelayout import PageLayout pg = PageLayout(**kwargs)
您可以將以下屬性作為關鍵字引數定義為 PageLayout 建構函式 -
anim_kwargs - 用於構造動畫的動畫 kwargs。它是一個 DictProperty,預設為 {'d': .5, 't': 'in_quad'}。
border - 當前頁面周圍邊框的寬度,用於在需要時顯示前一個/下一個頁面的滑動區域。它是一個 NumericProperty,預設為 50dp。
page - 當前顯示的頁面,它是一個 NumericProperty,預設為 0。
swipe_threshold - 用於觸發滑動的閾值,以元件大小的比率表示。swipe_threshold 是一個 NumericProperty,預設為 0.5。
PageLayout 識別觸控事件,您可以覆蓋以下事件處理程式 -
on_touch_down(touch) - 接收一個觸控按下事件,觸控引數為 MotionEvent 類。它返回一個布林值。如果為 True,則觸控事件的排程將停止。如果為 False,則事件將繼續排程到其餘的元件樹。
on_touch_move(touch) - 接收一個觸控移動事件。觸控位於父座標系中。
n_touch_up(touch) - 接收一個觸控抬起事件。觸控位於父座標系中。
這是一個簡單的 PageLayout 示例。我們將三個按鈕分別放置在不同的頁面上。
class PageApp(App):
def build(self):
pg = PageLayout()
btn1 = Button(text ='Page 1')
btn2 = Button(text ='Page 2')
btn3 = Button(text ='Page 3')
pg.add_widget(btn1)
pg.add_widget(btn2)
pg.add_widget(btn3)
return pg
執行時,顯示標題為“page 1”的按鈕。按住滑鼠並從右向左滑動,以顯示第二個和第三個頁面。從左向右滑動將使前一個頁面聚焦。
示例
在以下示例中,我們在 PageLayout 中添加了兩個浮動佈局。“kv”檔案用於設計 UI。
首先,執行 PageLayout 應用程式的 Python 程式碼 -
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.floatlayout import FloatLayout
from kivy.uix.pagelayout import PageLayout
from kivy.config import Config
Config.set('graphics', 'width', '720')
Config.set('graphics', 'height', '400')
Config.set('graphics', 'resizable', '1')
class PageDemoApp(App):
def build(self):
pass
if __name__ == '__main__':
PageDemoApp().run()
以下是“PageDemo.kv”檔案指令碼。PageLayout 嵌入了兩個 FloatLayout 物件。上方的浮動佈局是註冊頁面的設計,下方的浮動佈局是第二個頁面,包含登入螢幕。
PageLayout:
FloatLayout:
orientation:'vertical'
Label:
text:'Register'
font_size:'20pt'
pos_hint:{'center_x': .5, 'center_y': .9}
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:"email"
size_hint:(.2, .1)
pos_hint:{'x':.2, 'y':.55}
TextInput:
size_hint:(.4, .1)
pos_hint:{'x':.3, 'y':.45}
Label:
text:"Password"
size_hint:(.2, .1)
pos_hint:{'x':.2, 'y':.35}
TextInput:
password:True
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}
FloatLayout:
orientation:'vertical'
size:(720,400)
canvas.before:
Color:
rgba: 0,0,0, 1
Rectangle:
pos: self.pos
size: self.size
Label:
text:"Login"
font_size: '30pt'
pos_hint:{'center_x': .5, 'center_y': .75}
Label:
text:"email"
size_hint:(.2, .1)
pos_hint:{'x':.2, 'y':.55}
TextInput:
size_hint:(.4, .1)
pos_hint:{'x':.3, 'y':.45}
Label:
text:"Password"
size_hint:(.2, .1)
pos_hint:{'x':.2, 'y':.35}
TextInput:
password:True
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}
輸出
儲存“PageDemoApp.py”和“PageDemo.kv”這兩個檔案,然後執行 Python 指令碼。您應該首先看到註冊頁面。
現在,在應用程式視窗中從右向左滑動螢幕,使登入頁面顯示 -