Перемещать стоимость переменной одного Screen в другой Scren в Kivy - Pyhon

У меня есть App в Пайтоне с Kivy. Есть экран, чтобы предоставлять доступ (login) app, который консультирует BBDD и дает Ok, если он зарегистрирован. app использует Kivy с widget Screen, который переходит с другой из одного окна с ActionBar.

Проблема состоит в том, что я не способен перемещать стоимость изменчивая "Пользователь", когда я изменяю экран, для того, чтобы он показывает мне эту стоимость в ActionBar экрана Screen, в котором находятся в настоящее время.

В pantalla/Screen да, что появляется в ActionBar настоящее имя пользователя, как только он заверен. Однако в них я не способен к, что появился.

Посмотрим кто-то может бросать мне руку!. Спасибо

Fichero Usuario.py

class Login(Screen):
    nombre_usuario = StringProperty("")
    def entrar(self):
    conexion = pymysql.connect(host="", user="",passwd="", db="")   
    cursor = conexion.cursor()      
    user_login = self.ids["login"].text
    cursor.execute("SELECT * FROM users where user_login = 
 {}'".format(user_login))
    data = cursor.fetchall()

    if len(data) == 0:
        #if "'{}'".format(self.search_input_email.text).exists():
        print("No existe el usuario: ", self.ids["login"].text)
        self.ids["login"].text = ''
    else:   
        print("Existe el usuario: ", self.ids["login"].text)
        self.nombre_usuario_1 = self.ids["login"].text
        self.ids["login"].text = ''

        self.nombre_usuario = self.nombre_usuario_1
        return self.nombre_usuario

class Documentacion(Screen):
    def usuario(self):
        usuario = Login()
        self.nombre_usuario_1 = StringProperty("")
        self.nombre_usuario_1 = usuario.nombre_usuario
        return self.nombre_usuario_1

Fichero Usuario.kv

<Login>:
    name: "login"
    ActionBar:
        pos_hint: {'top':1}
        #Background color, in the format (red, green, blue, a).
        background_color: (1.0, 3.0, 0.0, 1.0)
        pos_hint: {'top':1}
        ActionView:
            use_separator: True
            ActionPrevious:
                title: ''
                with_previous: True
                on_press: 
                    app.root.current = 'menu_principal'    
            ActionButton:
                #Coloco el usuario que está activo
                text: "Usuario: " + root.nombre_usuario



<Documentacion>
    name: "documentacion"
    #Cabecera de ActionBar
    ActionBar:
        pos_hint: {'top':1}
        #Background color, in the format (red, green, blue, a).
        background_color: (1.0, 3.0, 0.0, 1.0)
        ActionView:
            use_separator: True
            ActionPrevious:
                title: ''
                with_previous: True
                on_press: 
                    app.root.current = 'menu_principal'
            ActionButton:
                #Coloco el usuario que está activo
                text: "Usuario: " + str(root.usuario())



0
задан 01.08.2019, 14:54
2 ответа

Смотри этот пример CheckBox, который приносит информацию одного screen к другому screen, с какой-то pequeГ±a modificaciГіn ты podrГ, - чтобы давать идею как когда твой делает.

CГіdigo .py

...

gender1 = StringProperty("")

def insert_data(self):

    self.ids['button_1'].text = format(self.gender1)

...

CГіdigo .kv

ScreenManager:
    id: manager
    size_hint: 1, .9999

    Screen:
        name: 'main'
...

Button:
    id: button_1
    text: "?"
    font_size:10
    on_press: root.ids.manager.current = '1'

....

Screen:
    name: '1'

...

Label:
    id:label_r
    text: "R"
    text_size: self.size
    halign:'center'
    valign: 'middle'

CheckBox:
    id : chk
    text: "R"
    on_active:
        root.gender1 = self.text


Button:
    id: Button_Aceptar
    text: 'Aceptar'
    on_press: root.insert_data()
0
ответ дан 01.12.2019, 22:38
  • 1
    Спасибо за ответ. Despué s его хожения, я сделал немного похоже но с funció n on_pre_enter (). Я оставляю có я говорю. – Javier 20.10.2019, 12:45
  • 2
    Он радует меня много @Javier, я надеюсь, что ты характеризуешь мой ответ позитивно. – Geniomax 24.10.2019, 06:54

main.py

__version__ = "1.0"

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty

class ScreenManagement(ScreenManager):
    pass

class Screen1(Screen):
    name_x = StringProperty('')
    def update_info(self):
        self.name_x = self.ids.nombre.text
        print(self.name_x)

class Screen2(Screen):
    names = StringProperty('')
    def on_pre_enter(self, *args):
        self.names = "Hola : " + self.manager.ids.Screen1.name_x 

class MainApp(App):
    def build(self):
        return ScreenManagement()

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

main.kv

#:kivy 1.11.0

<ScreenManagement>:
    Screen1:
        id: Screen1
    Screen2:
        id: Screen2

<Screen1>:
    name: "Screen_1"
    BoxLayout:
        Label:
            text: "nombre"
        TextInput:
            id: nombre
        Button:
            text: "Ver saludo"
            on_release:
                root.update_info()
                root.manager.current = "Screen_2"

<Screen2>:
    name: 'Screen_2'
    Button:
        text: root.names
        on_release: 
            root.manager.current = quit() #"Screen_1"
        font_size: 50
0
ответ дан 01.12.2019, 22:38
  • 1
    Ты был бы должен объяснять, как он состоит в том, что это решает то, что выдвигает вопрос. – ASASCED 20.10.2019, 17:07
  • 2
    Ответь на вопрос перемещая стоимость экрана Screen1 в экран Screen2 – Javier 22.10.2019, 14:29

Теги

Похожие вопросы