Kivy开发时TextInput组件width属性修改后不生效问题求助
问题原因
Kivy 的 BoxLayout 会默认通过 size_hint 属性自动分配子控件的尺寸,只有先把水平方向的 size_hint_x 设为 None,手动设置的 width 属性才会生效,你之前的配置未关闭 size_hint,所以宽度修改没有任何作用。
解决方法
方案1:设置固定宽度
给需要自定义宽度的 TextInput 加上 size_hint_x: None 配置,再指定实际宽度值即可,示例:
TextInput: multiline:False id:username hint_text:"Username" padding:[20,20,20,20] size_hint_x: None width: 300 # 替换为你需要的实际宽度即可
注意你之前写的width:1为极窄的1像素宽度,实际使用时填写合理的数值即可
方案2:按比例适配宽度
如果不需要固定像素宽度,想让输入框适配不同屏幕尺寸,可以直接调整 size_hint_x 的值,不需要设置 width,比如设为 0.8 就代表输入框占父布局宽度的80%:
TextInput: multiline:False id:username hint_text:"Username" padding:[20,20,20,20] size_hint_x: 0.8
优化建议
你当前代码中嵌套了多层垂直方向的 BoxLayout,内层的 BoxLayout 已经配置了左右各50的内边距,如果你希望所有输入框宽度保持一致,也可以直接给内层的 BoxLayout 设置 size_hint_x,输入框默认 size_hint_x: 1 会自动占满父布局宽度,不需要逐个给输入框配置尺寸。
内容的提问来源于stack exchange,提问作者Ulto 4
相关产品推荐
相关产品推荐

