kivymd 使用 root.manager.transition 时出现无效属性名称错误

0 投票
1 回答
21 浏览
提问于 2025-04-14 15:17

当我运行这段代码时,第24行出现了一个无效属性名称的错误("root.manager.transition.direction = 'left'")。

MDScreen:
    name:"main"
    MDFloatLayout:
        md_bg_color: 0.149,0.654,0.352,1
    Image:
        source: "main_photo_1.png"
        pos_hint: {"center_x": .5, "center_y": .65}
        size_hint: .5,.5
    MDLabel:
        text: "'welcome"
        font_size: 30
        pos_hint: {"center_y": .34}
        halign: "center"
        color: rgba(34,34,34,255)
    Button:
        text: ""
        size_hint: .66, .065
        background_color: 0,0,0,0
        Image:
            source: "log in.png"
            center_x: self.parent.center_x
            center_y: self.parent.center_y
        on_press:
            root.manager.transition.direction = 'left'
            root.manager.current = "login"

另外,这里是Python代码:

from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager
from kivy.core.window import Window
from kivy.core.text import LabelBase
from kivy.lang import Builder

Window.size = (310,580)
Builder.load_file("login.kv")


class MyApp(MDApp):

    def build(self):
        screen_manager = ScreenManager()
        screen_manager.add_widget(Builder.load_file('main.kv'))
        return screen_manager



MyApp().run()

我该如何解决这个问题呢?

1 个回答

0

我觉得在kv文件中,一个小部件的属性和事件应该放在它的子元素之前。你可以试着把on_press放在Image之前:

Button:
    text: ""
    size_hint: .66, .065
    background_color: 0,0,0,0
    on_press:
        root.manager.transition.direction = 'left'
        root.manager.current = "login"
    Image:
        source: "log in.png"
        center_x: self.parent.center_x
        center_y: self.parent.center_y

撰写回答