- 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 - ScrollView
- 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 - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 攝像頭處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 控制元件動畫
- Kivy - 雜項
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - ScrollView
Kivy 框架中的 ScrollView 控制元件可以包含任何尺寸大於分配給它的尺寸的其他控制元件,併為其提供一個可滾動的面板。這使得包含的控制元件可以垂直或水平平移/滾動。
ScrollView 類定義在 kivy.uix.scrollview 模組中。通常,您在一個佈局中組合一個或多個控制元件,並將該佈局新增到 ScrollView 中。
from kivy.uix.scrollview import ScrollView view = ScrollView() view.add_widget(layout)
ScrollView 物件的“scroll_x”和“scroll_y”屬性控制滾動面板的滾動行為。ScrollView 允許雙向滾動。您可以透過將“do_scroll_x”或“do_scroll_y”設定為 False 來停用某個軸上的滾動。
此外,“scroll_distance”屬性設定移動的最小距離,預設為 20 畫素。此外,scroll_timeout 屬性指定最大時間段,預設為 55 毫秒。
“scroll_distance”和“scroll_timeout”的重要性在於:如果觸控手勢滾動的畫素數大於或等於 scroll_distance,並且在 scroll_timeout 時間段內,則將其識別為滾動手勢,並將開始平移(滾動/平移)。如果超時,則觸控按下事件將傳播到子控制元件。
ScrollView 類的其他屬性如下所示:
do_scroll - 允許在 X 或 Y 軸上滾動。
do_scroll_x - 允許在 X 軸上滾動。這是一個 BooleanProperty,預設為 True。
do_scroll_y - 允許在 Y 軸上滾動。這是一個 BooleanProperty,預設為 True。
scroll_distance - 在畫素中滾動 ScrollView 之前移動的距離。這是一個 NumericProperty,預設為 20 畫素。
scroll_timeout - 觸發 scroll_distance 允許的超時時間(毫秒),預設為 55 毫秒
scroll_to() - 滾動視口以確保給定控制元件可見,可以選擇新增填充和動畫。
scroll_type - 設定用於 scrollview 內容的滾動型別。可用選項為:['content'], ['bars'], ['bars', 'content']。
ScrollView 物件發出以下事件:
on_scroll_start - 觸控開始滾動時觸發的通用事件。
on_scroll_move - 觸控滾動移動時觸發的通用事件。
on_scroll_stop - 觸控停止滾動時觸發的通用事件。
示例
為了能夠理解 ScrollView 的工作原理,我們需要一個足夠大的佈局,以便它溢位主應用程式視窗的尺寸。為此,我們將 100 個按鈕新增到一個單列網格佈局中,並應用 scrollview 到它。
以下示例中的操作程式碼如下所示:
layout = GridLayout(cols=1) for i in range(100): btn = Button(text='Button ' + str(i), size_hint_y=None, height=40) layout.add_widget(btn) root = ScrollView() root.add_widget(layout)
為了確保高度使得有東西可以滾動,將佈局物件的 minimum_height 屬性繫結到其設定器。
layout.bind(minimum_height=layout.setter('height'))
以下是 ScrollView 演示程式碼的完整程式碼:
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.app import App
from kivy.core.window import Window
Window.size = (720, 350)
class scrollableapp(App):
def build(self):
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
layout.bind(minimum_height=layout.setter('height'))
for i in range(100):
btn = Button(text='Button ' + str(i), size_hint_y=None, height=40)
layout.add_widget(btn)
root = ScrollView(
size_hint=(1, None),
size=(Window.width, Window.height)
)
root.add_widget(layout)
return root
scrollableapp().run()
輸出
執行以上程式碼。要超出檢視中可見的按鈕,請使用滑鼠垂直滾動,或者如果您正在使用觸控式螢幕裝置,則使用手指滾動。