【问题标题】:Question regarding changing screens in KivyMD关于在 KivyMD 中更改屏幕的问题
【发布时间】:2021-10-20 17:11:14
【问题描述】:

我是 KIVYMD 的新手,我一直在尝试通过创建一个登录屏幕来将用户转移到新页面。我已经降低了屏幕的核心,比如添加文本字段和按钮,但我不确定如何在我的代码中实现屏幕更改功能。非常感谢任何帮助。

这里是我的主要代码块供参考:

from kivymd.app import MDApp
from kivy.lang.builder import Builder
from helpers import username_helper,password_helper
from kivy.uix.screenmanager import Screen
from kivymd.uix.button import MDRectangleFlatButton


class Demo_app(MDApp):

    def build(self):
        screen = Screen()
        self.theme_cls.primary_palette= "Pink"
        self.username= Builder.load_string(username_helper)
        screen.add_widget(self.username)
        self.password = Builder.load_string(password_helper)
        screen.add_widget(self.password)
        login = MDRectangleFlatButton(text="Log In", pos_hint={"center_x": 0.5, "center_y":0.4})
        screen.add_widget(login)
        signin = MDRectangleFlatButton(text="Sign Up", pos_hint={"center_x": 0.5, "center_y": 0.3})
        screen.add_widget(signin)
        return screen

Demo_app().run()  

这是我的 .kv 文件:

username_helper="""

MDTextField:
    hint_text: "Create/Enter your Username"
    helper_text:"Or click here if you forgot your Username"
    helper_text_mode: "on_focus"
    icon_right: "language-python"
    icon_right_color: app.theme_cls.primary_color
    pos_hint:{"center_x":0.5,"center_y":0.6}
    size_hint_x:None 
    width:300

"""

password_helper="""
MDTextField:
    hint_text: "Create/Enter your Password"
    helper_text:"Or click here if you forgot your password "
    helper_text_mode: "on_focus"
    icon_right: "language-python"
    icon_right_color: app.theme_cls.primary_color
    pos_hint:{"center_x":0.5,"center_y":0.5}
    size_hint_x:None 
    width:300
"""

【问题讨论】:

  • 你应该使用ScreenManager。最简单的代码是this
  • 我玩过屏幕管理器,但无法让它与文本字段一起使用

标签: python kivy kivy-language kivymd


【解决方案1】:

我认为您想将这些文本输入数据传输到不同类别的标签。我想这就是你所需要的。(留意 ids):

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition

class FirstPage(FloatLayout):

    def switch_screen(self):
        secondpage = self.login_name = self.ids.login_name.text
        myapp.secondpage.update_name1(secondpage)
        secondpage = self.password_name = self.ids.password_name.text
        myapp.secondpage.update_name2(secondpage)
        myapp.screen_manager.transition = SlideTransition(direction='left', duration=.25)
        myapp.screen_manager.current = 'SecondPage'

class SecondPage(FloatLayout):

    def switch_back(self):
        myapp.screen_manager.transition = SlideTransition(direction='right', duration=.25)
        myapp.screen_manager.current = 'FirstPage'

    def update_name1(self, name_login):
        self.ids.name_login.text = (f'{name_login}:')

    def update_name2(self, name_password):
        self.ids.name_password.text = (f'{name_password}:')

class MyApp(App):

    def build(self):
        self.screen_manager = ScreenManager()

        self.firstpage = FirstPage()
        screen = Screen(name='FirstPage')
        screen.add_widget(self.firstpage)
        self.screen_manager.add_widget(screen)

        self.secondpage = SecondPage()
        screen = Screen(name='SecondPage')
        screen.add_widget(self.secondpage)
        self.screen_manager.add_widget(screen)

        return self.screen_manager

myapp = MyApp()
myapp.run()

这里是kivy 代码:

FirstPage:

<FirstPage>:

    TextInput:
        id: login_name
        size_hint: .65, .08
        multiline: False
        font_size: 20
        pos_hint: {'x': .2, 'y': .57}

    TextInput:
        id: password_name
        size_hint: .65, .08
        multiline: False
        font_size: 20
        pos_hint: {'x': .2, 'y': .47}

    Button:
        text: "First"
        size_hint: .1, .1
        on_release: root.switch_screen()

<SecondPage>:

    Button:
        text: "Second"
        size_hint: .1, .1
        on_release: root.switch_back()

    Label:
        id: name_login
        text: "Login"
        size_hint: .2, .2
        pos_hint: {'x': .2, 'y': .57}

    Label:
        id: name_password
        text: "Password"
        size_hint: .2, .2
        pos_hint: {'x': .2, 'y': .47}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多