我正在尝试有一个有效的后退按钮将用户带回主屏幕,如下所示为"社交",但似乎无法使其正常运行。我已经尝试了在此站点和其他一些站点上找到的多种解决方案,但似乎尚未解决问题。
我已经尝试了在此站点和其他一些站点上找到的多种解决方案,但似乎尚未解决问题。我目前正试图避免使用 Kivy 文件,但已经接受了在某些时候我将不得不制作一个。
#Main Screen
class Social(GridLayout):
title = "Welcome To PedaShield"
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.cols = 3
#FB 'Icon'
self.facebook = Button(text="Facebook")
self.facebook.bind(on_press=self.fb_signin)
self.add_widget(self.facebook)
#Button for Facebook Screen
def fb_signin(self, instance):
datastop.screen_manager.current = "FBSignin"
#Create FB sign-in screen w/ options
class FBSignin(GridLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.cols = 4
if os.path.isfile("fbprev_details.txt"):
with open("fbprev_details.txt", "r") as f:
d = f.read().split(",")
prev_username = d[0]
prev_password = d[1]
else:
prev_username = ""
prev_password = ""
#row 1
self.add_widget(Label())
self.add_widget(Label(text="Username: "))
self.username = TextInput(text=prev_username, multiline=False)
self.add_widget(self.username)
self.add_widget(Label())
#row 2
self.add_widget(Label())
self.add_widget(Label(text="Password: "))
self.password = TextInput(text=prev_password, multiline=False)
self.add_widget(self.password)
self.add_widget(Label())
#row 3 include checkbox for saving signin
self.add_widget(Label())
self.signin = Button(text="Sign In")
self.signin.bind(on_press=self.signin_button)
self.add_widget(self.signin)
self.goback = Button(text="Back")
self.signin.bind(on_press=self.go_back)
self.add_widget(self.goback)
self.add_widget(Label())
#sign-in button
def signin_button(self, instance):
username = self.username.text
password = self.password.text
print("Signing in as {username}")
with open("fbprev_details.txt","w") as f:
f.write(f"{username},{password}")
#Back button
def go_back(self, instance):
print('Here')
datastop.screen_manager.current = "Social"
class PedaShield(App):
title = "PedaShield"
def build(self):
self.screen_manager = ScreenManager()
#Main screen with Social Media Options
self.Social = Social()
screen = Screen(name='Social')
screen.add_widget(self.Social)
self.screen_manager.add_widget(screen)
#Facebook sign in/option page
self.fb_signin = FBSignin()
screen = Screen(name="FBSignin")
screen.add_widget(self.fb_signin)
self.screen_manager.add_widget(screen)
return self.screen_manager
if __name__ == "__main__":
datastop = PedaShield()
datastop.run()
我没有什么可追踪的,只是当它按下"后退"按钮时没有任何反应。
您将函数go_back
分配给按钮self.signin
self.signin.bind(on_press=self.go_back)
但它必须self.goback
self.goback.bind(on_press=self.go_back)
在旧代码中,当您单击"登录"按钮时,您可以看到两个字符串
Here
Signing in as {username}
第一个文本来自函数 go_back
。这应该给你线索,问题出在哪里