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

如何在Python Textual库的Screen内部切换应用模式?

在Textual的Screen中切换应用模式

要在Screen内部切换应用模式,核心是通过Screen的app属性获取所属的App实例,再调用App的switch_mode方法。以下是修正后的代码和关键说明:

关键问题修正

  1. 补全方法的self参数:你的process方法缺少self参数,无法访问Screen的实例属性。
  2. 通过self.app调用切换方法:每个Screen实例都自带app属性,指向它所属的App对象,直接用这个属性调用switch_mode即可完成模式切换。

修正后的完整代码

class DemoApp(App[None]):
    MODES = {
        "profile": ProfileScreen,
        "chat": ChatScreen,
        "help": HelpScreen,
    }
    
    def on_mount(self) -> None:
        """应用启动时执行"""
        LOGGER.info("Starting")
        self.switch_mode("chat")

class ChatScreen(Screen):
    def compose(self) -> ComposeResult:
        yield Button(label="Profile", variant="success", id="change_profile")

    async def on_button_pressed(self) -> None:
        await self.process()

    async def process(self):  # 补全self参数
        await self.app.switch_mode("profile")  # 通过self.app访问App实例并切换模式

额外优化建议

如果不需要单独的process方法,也可以直接在on_button_pressed中处理切换,简化代码:

async def on_button_pressed(self) -> None:
    await self.app.switch_mode("profile")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:33:11