vocus logo

方格子 vocus

【kivy screenmanager】SwapTransition 使用效果及語法|Kivy基礎用法

更新 發佈閱讀 8 分鐘


本篇開始:

  • 我的開發環境是win11
  • Python是3.10.7版本
  • 編碼的工具是Visual Studio Code(VS Code)



【本篇說明】在Kivy這個第三方函式庫(框架)裡面,其中screenmanager模組內建許多類別可以控制轉場效果(transition), 以下介紹的SwapTransition,它的視覺效果:舊畫面會縮小並移到後方,而新畫面會從後方放大並移動到前方。

1.先在main.py主程式寫下程式碼

在vscode開啟Python檔案,取名為main.py,以下簡稱.py

from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import Screen, ScreenManager, SwapTransition
from kivy.properties import ObjectProperty

Window.size = (290,550)

class FirstPage(Screen):
pass

class SecondPage(Screen):
pass

class Manager(ScreenManager):
tra = ObjectProperty(SwapTransition())

class main(App):
def build(self):
return Manager()

if __name__ == "__main__":
main().run()

▲說明:

1.從kivy.app模組,導入App類別

2.從kivy.core.window模組,導入Window類別 (為了調整視窗大小)

3.從kivy.uix.screenmanager模組,導入Screen、ScreenManager、SwapTransition類別

4.設定畫面大小為 (290,550),可參考:【kivy window】視窗大小原來可以自己決定!

5.定義FirstPage、SecondPage類,使其繼承Screen類別的屬性及方法(函式)

6.定義Manager類,使其繼承ScreenManager類別的屬性及方法(函式)

7.在Manager類別裡面,創建變數tra,使其為ObjectProperty類,並繼承SwapTransition類,代表現在screen切換模式為SwapTransition

8.定義main類,使其繼承App類,創建函式build(),並回傳Manager類別內容


raw-image

▲main.py程式碼


2.在VSCode新增(Kivy)檔案,取名 main.kv

kivy language,我使用的是"相同命名方式",如果不太懂我說的,可參考:【kivy language】如何使用 kivy language(kv)。

raw-image

▲我的是放在以下路徑:桌面-> python-> Kivy-> test


3.加入main.kv內容

在vscode編輯kivy檔案,取名為main.kv,以下簡稱.kv

<FirstPage>
name: 'firstpage'

BoxLayout:
Button:
text: 'go to secondpage'
on_release: root.manager.current = 'secondpage'

<SecondPage>
name: 'secondpage'

BoxLayout:
Button:
text: 'back to firstpage'
on_release: root.manager.current = 'firstpage'

<Manager>
transition: root.tra
FirstPage:
SecondPage:

▲說明:

1.在<firstpage>裡面加入 name參數,並使其等於 'firstpage'

2.加入Button物件,使用觸發函式on_release,並呼叫 manager.current函式,用來決定目前screen呈現為secondpage,可參考:【kivy Button】經常使用的Button(按鈕)語法

3.在<SecondPage>裡面加入 name參數,並使其等於 'secondpage'

4.加入Button物件,使用觸發函式on_release,並呼叫 manager.current函式,用來決定目前screen呈現為firstpage

5.在<Manager>裡面加入transition、FirstPage 以及SecondPage

6.並使transition參數等於根物件(也就是Manager類別)tra變數


raw-image

▲main.kv程式碼


4.執行 Python檔案

請點擊網址觀看影片1:

https://drive.google.com/drive/folders/1l8rK6YaFiy_uVx4tpeu3DhhjRsXf2I6z?usp=sharing

▲如影片1:(預設)轉換時間不到1秒


5.可改變轉換時間(無法改變轉換方向)

以下.py程式碼:

from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import Screen, ScreenManager, SwapTransition
from kivy.properties import ObjectProperty

Window.size = (290,550)

class FirstPage(Screen):
pass

class SecondPage(Screen):
pass

class Manager(ScreenManager):
# 這邊更改,加入duration 參數
tra = ObjectProperty(SwapTransition(duration=3))

class main(App):
def build(self):
return Manager()

if __name__ == "__main__":
main().run()
raw-image

▲main.py程式碼

【說明】加入duration 參數,轉換時間為3(s)

請點擊網址觀看影片2:

https://drive.google.com/drive/folders/1l8rK6YaFiy_uVx4tpeu3DhhjRsXf2I6z?usp=sharing

▲如影片2:轉換時間3秒


6.本篇小結

了解SwapTransition的基本語法,讓螢幕看起來像是在3D空間交換位置,並可透過內建屬性(duration參數)來改變其轉換時間。


本篇結束:

在自學路上遇到困難是很正常的事,只要堅持到底,相信就會有所成果,期勉大家一同努力。


留言
avatar-img
艾肯比工程師
4會員
75內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
2026/02/04
本篇將說明 Kivy 的 ScreenManager 模組中 CardTransition 的使用方法, 創建類似 Android 的切換方式:卡片堆疊(push)和抽出(pop)效果,並透過 duration、direction 和 mode 參數,靈活控制轉場時間、方向及模式。
Thumbnail
2026/02/04
本篇將說明 Kivy 的 ScreenManager 模組中 CardTransition 的使用方法, 創建類似 Android 的切換方式:卡片堆疊(push)和抽出(pop)效果,並透過 duration、direction 和 mode 參數,靈活控制轉場時間、方向及模式。
Thumbnail
2026/01/28
本文介紹 Kivy ScreenManager 的 FadeTransition 轉場效果,透過實際程式碼與影片演示 FadeTransition 的基本用法、原地淡入淡出視覺效果,以及如何調整 `duration` 參數來改變畫面切換的時間。
Thumbnail
2026/01/28
本文介紹 Kivy ScreenManager 的 FadeTransition 轉場效果,透過實際程式碼與影片演示 FadeTransition 的基本用法、原地淡入淡出視覺效果,以及如何調整 `duration` 參數來改變畫面切換的時間。
Thumbnail
2026/01/21
本篇文章將介紹 Kivy 的 ScreenManager 模組中的 RiseInTransition轉場效果,說明如何實現新畫面會從螢幕中央擴散,以「放大、淡入」的方式出現,並由透明轉成不透明顯現出新畫面的視覺效果,並可透過 duration 參數調整轉場時間。
Thumbnail
2026/01/21
本篇文章將介紹 Kivy 的 ScreenManager 模組中的 RiseInTransition轉場效果,說明如何實現新畫面會從螢幕中央擴散,以「放大、淡入」的方式出現,並由透明轉成不透明顯現出新畫面的視覺效果,並可透過 duration 參數調整轉場時間。
Thumbnail
看更多