У меня есть 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())
Смотри этот пример 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()
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