Python 如何使用其他kivy应用程序的参数启动kivy应用程序
我希望在启动时将textinput中的变量传递给另一个类。因此,我有一个loginscreen类(使用python和kivy完成),当用户输入用户名时,我希望将其传递给另一个类(在不同的.py文件中),以便新启动的类能够用它的名称迎接用户 我该怎么做 登录屏幕。py: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
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
你确定需要启动另一个应用程序吗?难道你不能显示另一个显示“用户特定问候语”的屏幕吗?看看。感觉像个旋钮,但这可能正是我需要研究的。非常感谢您抽出时间!非常有用的回答,非常感谢@如果它对你有帮助,可以把它标记为正确的。