[英]Switch screen with screenmanager with python code
我正在為學校制作一個應用程序,需要在我的屏幕管理器中切換屏幕(與 kivymd 和屏幕管理器一起工作)。 檢查用戶名和密碼后,我需要切換屏幕。 我想用 python 代碼而不是在 kv 文件中用“”on_press:root.manager.current = 'Login'“”來切換它們。
在 def 驗證中,我嘗試使用“sm.current_screen = 'Main'”,但它不起作用。
有人可以幫助我嗎?
class LoginScreen(Screen):
pass
class RegisterScreen(Screen):
pass
class MainScreen(Screen):
pass
class Change(Screen):
pass
class ShowObj(Screen):
pass
sm = ScreenManager()
sm.add_widget(LoginScreen(name='Login'))
sm.add_widget(RegisterScreen(name='Register'))
sm.add_widget(MainScreen(name='Main'))
sm.add_widget(Change(name='change'))
sm.add_widget(Change(name='Show'))
class GipApp(MDApp):
def build(self):
self.theme_cls.primary_palette = 'Blue'
screen = Builder.load_string(screen_helper)
self.username = "unknown"
return screen
def verify(self, username, password):
if username != "" and password != "":
for row in MySqlNames:
if row[0].strip() == username:
sql = "SELECT Password from ID191774_6itn1project7.Users where Username = %s "
mycursor.execute(sql, (username))
TestPassword = mycursor.fetchall()
for row3 in TestPassword:
if row3[0].strip() == password:
print("inloggen is gelukt")
self.username = username
print(self.username)
sm.current_screen = 'Main'
if row3[0] != password:
dialog = MDDialog(title="Passwords is not correct.")
dialog.open()```
代碼中的行:
sm = ScreenManager()
sm.add_widget(LoginScreen(name='Login'))
sm.add_widget(RegisterScreen(name='Register'))
sm.add_widget(MainScreen(name='Main'))
sm.add_widget(Change(name='change'))
sm.add_widget(Change(name='Show'))
沒有完成任何事情,因為您沒有在App
中使用sm
。 您可以刪除這些行。
由於sm
未在您的App
中使用,因此該行:
sm.current_screen = 'Main'
不會改變Screen
。 我建議您將該行替換為:
App.get_running_app().root.current = 'Main'
這假設您的kv
文件描述了一個以ScreenManager
作為根的Widget
樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.