【发布时间】:2021-04-03 14:26:58
【问题描述】:
我用 Python 和 KivyMD 创建了一个简单的应用程序。当应用程序运行时,登录屏幕要求输入。是这样的:
from kivy.app import App
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import StringProperty
from kivy.uix.screenmanager import ScreenManager,Screen
class Login(Screen):
def __init__(self, *args, **kwargs):
super(login,self).__init__(*args,**kwargs)
self.user=""
self.username=self.ids.usernamebox.text
self.password=self.ids.passwordbox.text
def checkusername(self)
if self.username=="something" and self.password=="something":
self.user="admin"
else:
self.user="member"
sm.current='nextscreen'
class NextScreen(Screen):
def somefeatures(self):
if Login.user="admin":
print(Login.user)
pass
if Login.user="member":
print(Login.user)
pass
class MyApp(MDApp):
def build(self):
global sm
sm=ScreenManager()
sm.add_widget(Logon(name='login'))
sm.add_widget(NextScreen(name='nextscreen'))
另外,如果有帮助的话,kivy 代码:
<Login>
MDBoxLayout:
orientation: "vertical"
MDTextField:
id: usernamebox
hint_text: "Username"
MDTextField:
id: passwordbox
hint_text: "Password"
MDFillRoundFlatButton:
id: login
text: "Login"
on_release: root.checkusername()
pos_hint: {"center_x":.5}
<NextScreen>
MDBoxLayout:
orientation: "vertical"
MDFlatButton:
text: "test"
on_press: root.somefeatures()
我正在使用 kivy 屏幕管理器在类之间切换。
我试图实现的是如何让somefeatures在用户登录后打印出正确的用户值
到目前为止我已经尝试过:
- 初始化登录类
l=login()并使用l.user进行访问,因为__init__将“用户”返回为空字符串,所以不起作用 - 创建
global user,但仍为空字符串 - 在类登录中创建
setuser和getuser方法,但仍然无法返回值 - 在任何其他类之前初始化类
user=""之外的用户,也是空字符串 - 像上面的代码一样访问登录类的值,上面写着
type object Login has no attribute user
有没有办法做到这一点?只要应用程序运行(或直到我制作注销按钮,idk),我希望用户的值仍然被记住
非常感谢。
【问题讨论】:
-
你能附上一个 minimal 工作示例吗?
-
对不起,我不明白你的意思?
-
请附上一段代码,无需任何操作即可运行,也无需不必要的函数和行
-
我已经编辑了代码。