Kivy用户信息表单无法显示内容,请求排查代码错误
解决你的Kivy表单不显示内容问题
嘿,我来帮你搞定这个问题!你的表单没显示内容主要是两个关键问题导致的,咱们一步步修复:
1. KV代码没有被正确加载
Kivy默认会自动加载和你的App类名对应的KV文件——规则是把App类名去掉App后缀,改成全小写。你的App类是YourDiaryApp,所以对应的KV文件应该叫yourdiary.kv。如果你的KV代码是写在单独文件里但文件名不对,Kivy就找不到它,自然不会渲染界面。
当然,你也可以像下面这样,用Builder.load_string()把KV代码直接嵌入到Python文件里,这样就不用纠结文件名的问题了。
2. FloatLayout里的控件缺少布局属性
FloatLayout的特点是需要手动指定控件的位置和大小,默认情况下所有控件都会挤在左上角,甚至可能因为尺寸为0而完全看不到。所以必须给每个控件加上pos_hint(相对父容器的位置)和size_hint(相对父容器的大小)。
修复后的完整代码
import kivy from kivy.app import App from kivy.uix.widget import Widget from kivy.lang import Builder # 直接加载KV代码,无需单独创建KV文件 Builder.load_string(''' <Widgets>: FloatLayout: Label: text:'What do you want me to call you' pos_hint: {"x":0.1, "top":0.9} size_hint: 0.8, 0.1 TextInput: id:username pos_hint: {"x":0.1, "top":0.8} size_hint: 0.8, 0.1 Label: text:'What do you wanna call me' pos_hint: {"x":0.1, "top":0.7} size_hint: 0.8, 0.1 TextInput: id:diaryname pos_hint: {"x":0.1, "top":0.6} size_hint: 0.8, 0.1 Label: text:'What will be your password' pos_hint: {"x":0.1, "top":0.5} size_hint: 0.8, 0.1 TextInput: id:password pos_hint: {"x":0.1, "top":0.4} size_hint: 0.8, 0.1 password: True # 让密码输入框隐藏输入内容 Button: text:'Complete Setup' pos_hint: {"x":0.3, "top":0.2} size_hint: 0.4, 0.1 ''') class Widgets(Widget): pass class YourDiaryApp(App): def build(self): return Widgets() if __name__ == "__main__": YourDiaryApp().run()
额外优化说明
- 给密码输入框加了
password: True,这样输入的内容会变成圆点,更符合密码输入的场景; - 所有控件的位置和大小都是相对父容器的,这样窗口大小变化时界面也能自适应。
内容的提问来源于stack exchange,提问作者user9387061
相关产品推荐
相关产品推荐

