【发布时间】:2015-05-15 07:19:09
【问题描述】:
我正在开发一个 kivy 应用程序,其中有两个屏幕 1.登录界面 和2.HomeScreen。
需要的是 -
在LoginScreen 类中计算的值“xyz”,将传递给HomeScreen 类的方法'insertdata',并希望在标签上显示该值。
为此,我尝试了以下代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import Screen, ScreenManager
class loginScreen(Screen):
def __init__(self,**kwargs):
super(HomeScreen, self).__init__(**kwargs)
def auth(self):
xyz=1
self.manager.current="home"
obj=HomeScreen()
# 1. To Pass 'xyz' to method scrn2
HomeScreen.insertdata(obj)
class HomeScreen(Screen):
def __init__(self,**kwargs):
super(LoginScreen, self).__init__(**kwargs)
if (a==1):
# 2. To display label
self.scrn2()
def insertdata(self):
print "screen 2"
label=Label(text="good moring")
self.add_widget(label)
class ScreenApp(App):
pass
if __name__ == '__main__':
ScreenApp().run()
这里:
- insertdata 是从方法 auth 调用的
1) 第一种方式是正确的,因为它传递了 'xyz' 并调用方法 insertdata 但它不显示标签
2) 在第一种方式中,我必须创建一个 HomeScreen 对象,调用 insertdata,然后调用 Homescreen 的 ___init__ 和 init 调用 @ 987654330@
- 从 __init__ 调用的插入数据
1) 在登录界面进行用户认证之前加载数据
insertdata 总共获得 3 个调用,这会影响应用启动时间。
为此建议我任何简单有效的方法。 提前致谢。
【问题讨论】: