You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kivy切换.kv文件对应窗口:关闭旧窗口打开新窗口

实现Kivy窗口切换(打开新窗口时关闭旧窗口)

核心思路

Kivy中每个App实例对应一个独立窗口,要实现切换时关闭旧窗口,只需在启动新应用前调用当前应用的stop()方法终止并关闭窗口,再启动新的App实例即可。

代码实现

1. mainApp.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import secondScreen

class MainLayout(BoxLayout):
    def switch_to_second(self):
        # 关闭当前应用窗口
        App.get_running_app().stop()
        # 启动第二个窗口应用
        secondScreen.SecondApp().run()

class MainApp(App):
    def build(self):
        return MainLayout()

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

2. mainApp.kv

<MainLayout>:
    orientation: 'vertical'
    Button:
        text: '切换到第二个窗口'
        on_press: root.switch_to_second()

3. secondScreen.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import mainApp

class SecondLayout(BoxLayout):
    def switch_to_main(self):
        # 关闭当前应用窗口
        App.get_running_app().stop()
        # 启动主窗口应用
        mainApp.MainApp().run()

class SecondApp(App):
    def build(self):
        return SecondLayout()

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

4. secondScreen.kv

<SecondLayout>:
    orientation: 'vertical'
    Button:
        text: '切换回主窗口'
        on_press: root.switch_to_main()

关键注意点

  • 将导入语句放在方法内部,避免两个文件相互导入导致的循环导入问题
  • 若需要保留应用状态,可在切换前将数据存入全局变量、本地文件或数据库中

内容的提问来源于stack exchange,提问作者maiada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:02:36