“后退”按钮在带有 Kivy 的 Python 中不起作用

约翰·斯隆伯里

我正在尝试使用一个功能正常的后退按钮将用户带回主屏幕,如下所示为“社交”,但似乎无法使其正常工作。我已经尝试了在本网站和其他网站上找到的多种解决方案,但似乎还没有解决问题。

我已经尝试了在本网站和其他网站上找到的多种解决方案,但似乎还没有解决问题。我目前正试图避免使用 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}

第一个文本来自 function go_back这应该给你线索问题出在哪里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章