python - Python + Kivy(第二个屏幕加载空白)
问题描述
我现在正在学习 kivy……我正在为朋友开发我的第一个应用程序,一个非常简单的应用程序。但我面临这个错误:
每当我单击“创建帐户”时,名为“登录(屏幕)”的名称就会加载为空白。我在我的 kivy 文件上创建的小部件都没有显示。
以下是代码:
==================================================== =========================
蟒蛇文件:
from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
class Gerenciador(ScreenManager):
pass
class BoasVindas(Screen):
pass
class Login(Screen):
def logar(self, usuario, senha):
print("usuario={0}, senha={1}".format(usuario, senha))
class Resultado(Screen):
pass
class LoginApp(App):
def build(self):
return Gerenciador()
LoginApp().run()
==================================================== =======================
基维文件:
<Gerenciador>:
BoasVindas:
name: 'boasvindas'
BoxLayout:
orientation:'vertical'
Label:
text:'Faça o seu Login ou crie uma nova conta'
Button:
text:'Login'
Button:
text:'Criar nova conta'
on_release:root.current='login'
Login:
name: 'login'
BoxLayout:
TextInput:
id:usuario
hint_text:'Usuário'
multiline: False
TextInput:
id:senha
hint_text:'Senha'
multiline: False
password: True
Button:
id:'btn'
text:'Ok'
on_press: self.parent.parent.logar(usuario.text, senha.text)
on_release:root.current='boasvindas'
==================================================== ========================
关于我所缺少的任何想法?第一个屏幕加载完美。如果我交换订单,登录屏幕加载良好。但是第二个屏幕是空白的,无论什么内容。只要是要加载的第二个屏幕,它就会返回空白。
谢谢!
解决方案
在您的__init__()
方法中,Gerenciador
您正在创建Login
和BoasVindas
屏幕,但您也在.kv
文件中创建它们。你不应该两者都做。如果您在.kv
文件中创建它们,您的代码如下所示:
蟒蛇文件:
from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
class Gerenciador(ScreenManager):
pass
class BoasVindas(Screen):
pass
class Login(Screen):
pass
class Resultado(Screen):
pass
class TesteLogin(App):
def build(self):
return Gerenciador()
TesteLogin().run()
.kv 文件:
<Gerenciador>:
BoasVindas:
name: 'boasvindas'
BoxLayout:
orientation:'vertical'
Label:
text:'Faça o seu Login ou crie uma nova conta'
Button:
text:'Login'
Button:
text:'Criar nova conta'
on_release:root.current='login'
Login:
name: 'login'
BoxLayout:
TextInput:
id:usuario
hint_text:'Usuário'
multiline: False
TextInput:
id:senha
hint_text:'Senha'
multiline: False
password: True
Button:
id:'btn'
text:'Ok'
#on_press:self.parent.parent.logar(usuario.text, senha.text)
on_release:root.current='boasvindas'
在您的.kv
文件中,当类名被 包围时<>
,这意味着它是用于构建该类的模板,但实际上并未创建该类。创建了没有的类<>
,但.kv
文件中的类从属于Gerenciador
该类。因此,当Gerenciador
创建类的实例时(如在您的App.build()
方法中),Login
和BoasVindas
屏幕被创建为其子项。请注意,我将name
属性添加到文件中的这些屏幕.kv
。
推荐阅读
- python - 只有最后一个值显示在 tkinter 列表框中
- spring-boot - 为什么spring-boot-starter项目的github项目是空的?
- python-3.x - 角色仅在碰撞的第二帧中被传送。为什么?
- python - Python kwargs(学习)
- javascript - 在 Firestore 中获取文档名称并创建嵌套对象
- node.js - 如何在不覆盖架构中其他字段的情况下更新我在帖子中的评论
- python - 重新匹配两次出现的单词之间的所有文本
- sql - 点后的 Sql 值变化
- c# - 如何限制 Blazor 服务器端请求大小
- python - Python:Lambda 一行输入+计算