Кнопка киви с одного экрана доступа к другому экрану не работает - PullRequest
0 голосов
/ 22 апреля 2020

Я полностью запутался в концепции Kivy OOP, несмотря на некоторую помощь со стороны нескольких участников из предыдущих постов и чтения на разных примерах.

Фрагмент кода настолько короткий, насколько я могу его сократить.

У меня вопрос, как мне получить доступ к методу с Screen_2 на Screen_1. Если я правильно понимаю python и OOP, то путь написан правильно. Вы добавляете экземпляр класса и затем используете этот экземпляр для доступа к методу, однако он не работает. следующий код обновляется после моих последних комментариев:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.listview import ListItemButton
from kivy.uix.screenmanager import ScreenManager, Screen


class Manager(ScreenManager):
    main_screen = ObjectProperty()
    profile_screen = ObjectProperty()

class MainScreen(Screen):
    first_name_text_input= ObjectProperty()
    last_name_text_input= ObjectProperty()
    student_list = ObjectProperty()

    def submit_student(self):
        print ("hi")

class ProfileScreen(Screen):
    def __init__(self, **kwargs):
        super(ProfileScreen, self).__init__(**kwargs)
        self.app = App.get_running_app()
        self.a = self.app.ms

    def okay(self):
        self.a.submit_student()


class StudentDBApp(App):
    ms = MainScreen()

    def build(self):
        return Manager()

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

В общем, я понимаю, как работает OOP. Моя борьба всегда сводится к графическому интерфейсу и OOP. еще раз спасибо за ваше время.

вот файл kv

<Manager>:
    id: screen_manager
    main_screen: main_screen
    profile_screen: profile_screen

    MainScreen:
        id: main_screen
        name:"main_screen"
        manager: screen_manager

    ProfileScreen:
        id: profile_screen
        name: "profile_screen"
        manager: screen_manager

<MainScreen>:
    first_name_text_input: first_name
    last_name_text_input: last_name
    BoxLayout:
        orientation: "vertical"
        BoxLayout:
            Label:
                text:"First Name:"
            TextInput:
                id: first_name
            Label:
                text:"Last Name:"
            TextInput:
                id: last_name
        BoxLayout:
            Button:
                text:"Submit"
                on_release: root.submit_student()

            Button:
                text: "New"
                on_release: root.manager.current="profile_screen"


<ProfileScreen>:

    BoxLayout:
        orientation: "vertical"
        BoxLayout:
            Button:
                text:"Back"
                on_release: root.manager.current="main_screen"

            Button:
                text: "Okay"
                on_release: root.okay()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...