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

如何在Python的Kivy框架中从另一个类修改Label文本?

实现点击课程按钮更新LessonWindow的Label文本

修改后的Python代码

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
kv = Builder.load_file('test.kv')


class LessonsList(Screen):
    def press(self, lesson_num):
        # 获取LessonWindow页面实例
        lesson_screen = self.manager.get_screen('lesson')
        # 更新Label的文本内容
        lesson_screen.ids.lesson_label.text = f'Lesson {lesson_num}'
        # 切换到lesson页面
        self.manager.current = "lesson"


class LessonWindow(Screen):
    def back(self):
        self.manager.current = "lessons"
        self.manager.transition.direction = "left"


manager = ScreenManager()
manager.add_widget(LessonsList(name="lessons"))
manager.add_widget(LessonWindow(name="lesson"))


class MyApp(App):
    def build(self):
        return manager


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

修改后的kv文件

<LessonsList>:
    BoxLayout:
        size: root.width, root.height
        orientation: 'vertical'
        Button:
            text:'Lesson 1'
            on_press: root.press('1')
        Button:
            text:'Lesson 2'
            on_press: root.press('2')
        Button:
            text:'Lesson 3'
            on_press: root.press('3')

<LessonWindow>:
    BoxLayout:
        orientation: 'vertical'
        Label:
            id: lesson_label  # 添加id用于后续引用修改文本
            text: 'Lesson'
        Button:
            text:'Back'
            on_press: root.back()

关键改动说明

  1. 给LessonsList的press方法添加lesson_num参数,用来接收点击按钮对应的课程编号
  2. 在kv文件中,每个按钮调用press时传入对应的编号字符串
  3. 给LessonWindow里的Label添加id,方便通过页面实例直接定位并修改文本
  4. 修正back方法中直接使用manager的问题,改为self.manager(原代码会因未定义全局变量报错)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:14