python-3.x - 为什么我的应用程序的屏幕会连接在一起?
问题描述
我正在使用 kivy 为应用程序制作登录和注册页面,但是当我运行程序时,两个屏幕都连接在一起。请帮我。这是我的python代码:-
from kivy.app import App
from kivy.lang import Builder
from kivy.core.text import LabelBase
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_file('design.kv')
LabelBase.register(name= "oswald",
fn_regular= "oswald/Oswald-Regular.ttf")
class LoginScreen(Screen):
def sign_up(self):
self.manager.current = "signup_screen"
class SignupScreen(Screen):
pass
class RootWidget(Screen):
pass
class MainApp(App):
def build(self):
return RootWidget()
if __name__ == "__main__":
MainApp().run()
这是我的 kivy 代码:-
<LoginScreen>:
GridLayout:
cols: 1
GridLayout:
cols: 1
Label:
text: "User Login"
TextInput:
hint_text: "Username"
TextInput:
hint_text: "Password"
Button:
text: "Login"
GridLayout:
cols: 2
Button:
text: "Forgot Password?"
Button:
text: "Signup here"
on_press: root.sign_up()
<SignupScreen>:
GridLayout:
cols:1
Label:
text: "Signup for lots of fun!!!"
TextInput:
hint_text: "Username"
TextInput:
hint_text: "Password"
Button:
text: "Signup"
<RootWidget>:
LoginScreen:
name: "login_screen"
SignupScreen:
name: "signup_screen"
这就是它应该看起来的样子:-
但这是错误页面:-
请帮我。
解决方案
尝试改变:
class RootWidget(Screen):
pass
至:
class RootWidget(ScreenManager):
pass
当我相信您想将它们添加Screens
到 a时,您正在添加到 a 中。Screen
ScreenManager
推荐阅读
- sql - 显示飞行员姓名、航班数量为“航班数量”、总薪酬为“补偿”——适用于 2017 年 4 月试飞的航班
- python-3.x - 如何通过 for 循环访问嵌套列表
- x86 - PolyBench Suite 的 x86 反汇编中的浮点指令
- javascript - Javascript 具有模拟用户交互的方法,例如 .click()、.focus()、.blur()。但是没有.hover()。JS可以模拟悬停/鼠标悬停吗?
- tensorflow - Keras 循环 LSTM 层
- database - 访问数据库帮助 - 挑选足球比赛
- html - CSS Snippet - 单击按钮时会打开第一个元素和另一个元素
- tcp - 对 TcpStreams 的 Read trait 如何工作的误解
- java - 需要从数字列表中显示最大和最小等级
- angularjs - 项目组织