Python 如何使用其他kivy应用程序的参数启动kivy应用程序

Python 如何使用其他kivy应用程序的参数启动kivy应用程序,python,class,kivy,Python,Class,Kivy,我希望在启动时将textinput中的变量传递给另一个类。因此,我有一个loginscreen类(使用python和kivy完成),当用户输入用户名时,我希望将其传递给另一个类(在不同的.py文件中),以便新启动的类能够用它的名称迎接用户 我该怎么做 登录屏幕。py: from kivy.app import App import user_specific_greeting_screen class LoginUser(): def__init__(self): pa

我希望在启动时将textinput中的变量传递给另一个类。因此,我有一个loginscreen类(使用python和kivy完成),当用户输入用户名时,我希望将其传递给另一个类(在不同的.py文件中),以便新启动的类能够用它的名称迎接用户

我该怎么做

登录屏幕。py:

from kivy.app import App
import user_specific_greeting_screen

class LoginUser():
    def__init__(self):
        pass

def login(self):
    username_to_pass_on = self.user.text
    self.canvas.clear()
    user_specific_greeting_screen.ReturnApp2().run()  # <----  Want to pass var: 
                                                      #         username_to_pass_on
    

class  ReturnApp1(App):
    def build(self):
        return LoginUser()

if __name__ == '__main__':
    ReturnApp1().run()
<LoginUser>:
    user: user_kv
    BoxLayout:
        orientation: 'vertical'
        rows: 2
        BoxLayout:
            TextInput:
                id: user_kv
                hint_text: 'input username'
        BoxLayout:
            Button:
                text: 'Login'
                on_press: root.login()
<UserGreet>:
    label: label_kv
    Label:
        id: label_kv
从kivy.app导入应用
导入特定于用户的问候语屏幕
类LoginUser():
定义初始化(自):
通过
def登录(自我):
username\u to\u pass\u on=self.user.text
self.canvas.clear()

特定于用户的问候语屏幕。ReturnApp2().run()#您应该在kivy中使用
ScreenManager()
,而不是生成两个不同的python和kivy文件。这允许您创建多个
Screen()
,每个应用程序都有自己的小部件集

Python文件(main.py)

Kivy文件(style.kv)

#:kivy 1.11.1
:
名称:“登录屏幕”
盒子布局:
方向:“垂直”
行数:2
盒子布局:
文本输入:
id:user_kv
提示文字:“输入用户名”
盒子布局:
按钮:
文本:“登录”
按:root.login()
:
名称:“UserGreetScreen”
标签:
id:label_kv
需要注意的事项:

from kivy.app import App
import user_specific_greeting_screen

class LoginUser():
    def__init__(self):
        pass

def login(self):
    username_to_pass_on = self.user.text
    self.canvas.clear()
    user_specific_greeting_screen.ReturnApp2().run()  # <----  Want to pass var: 
                                                      #         username_to_pass_on
    

class  ReturnApp1(App):
    def build(self):
        return LoginUser()

if __name__ == '__main__':
    ReturnApp1().run()
<LoginUser>:
    user: user_kv
    BoxLayout:
        orientation: 'vertical'
        rows: 2
        BoxLayout:
            TextInput:
                id: user_kv
                hint_text: 'input username'
        BoxLayout:
            Button:
                text: 'Login'
                on_press: root.login()
<UserGreet>:
    label: label_kv
    Label:
        id: label_kv
  • 使用屏幕时,您可以直接访问ID,而不必在.kv文件中创建属性(
    label:label\u kv
    不需要,您可以直接
    self.IDs[“”]
  • 您可以分别在.py和.kv中声明屏幕,就像主窗口小部件一样,但两者都在一个文件中
  • 您需要为每个屏幕指定一个名称,这可能与类名不同,但保持相同有助于保持一致性
  • 我们现在使用
    self.manager.current=“ScreenName”
  • 我已经设置了
    用户名\u to \u pass \u on
    ,这是屏幕的一个属性,允许从任何其他屏幕轻松访问
  • 我们使用Builder加载文件并在构建中初始化
    ScreenManager()
    ,然后逐个添加屏幕,最后返回管理器
  • 为了访问另一个屏幕的属性和小部件,您可以从屏幕上使用
    self.manager.get_screen(“ScreenName”).property

  • 你确定需要启动另一个应用程序吗?难道你不能显示另一个显示“用户特定问候语”的
    屏幕吗?看看。感觉像个旋钮,但这可能正是我需要研究的。非常感谢您抽出时间!非常有用的回答,非常感谢@如果它对你有帮助,可以把它标记为正确的。