在 kivi 中居中文本字段
Posted
技术标签:
【中文标题】在 kivi 中居中文本字段【英文标题】:Centering text fields in kivi 【发布时间】:2021-07-08 11:56:08 【问题描述】:下面的屏幕截图代表了一个使用 kivy 的工作 Python 程序。但是,kivy 描述符文件可能有错误。我希望两个文本字段(第二行和第三行)居中。
我本以为 anchor_x:'center' 会这样做,但我一定是错过了什么。
你会认为这很容易,但我做不到。 .kv 描述符文件:
# Add two numbers layout code
BoxLayout:
spacing: 1
orientation:'vertical'
pos_hint: 'x': 0, 'y': 0
background_color: .7,.7,.7,1
canvas.before:
Color:
rgba: .7, .7, .7, 1
Rectangle:
size: self.size
pos: self.pos
ColorLabel:
text: "Enter two numbers to add"
TextInput:
id: frnum
size_hint: (None, .8)
width: 150
anchor_x: 'center'
TextInput:
id: secnum
size_hint: (None, .8)
width: 150
anchor_x: 'center'
# horizontal box contains two buttons
BoxLayout:
spacing: 10
orientation:'horizontal'
canvas.before:
Color:
rgba: .7, .7, .7, 1
GrayButton:
text: 'Add'
color: 0,0,0,1
on_release:
app.bclick()
GrayButton:
text: 'Clear'
on_release:
app.cclick()
ColorLabel:
text: "Sum appears here"
id: sumlabel
<ColorLabel@Label>:
color: 0,0,1,1
size: self.texture_size
canvas.before:
Color:
rgba: .9, .9, .9, 1
Rectangle:
pos: self.pos
size: self.size
padding_x: 20
background_color: .7,.7,.7,1
<GrayButton@Button>:
color: 0,0,0,1
background_normal: ''
background_color: .8,.8,.8,1
padding_horizontal: 20
size_hint: (0.5,0.7)
pos_hint: 'x':.2, 'y':.2, 'center_x':.5
from kivy.app import App
from kivy.core.window import Window
from kivy.config import Config
class MainApp(App):
def build(self):
#self.title = "Add two numbers"
Window.size = (300, 200)
self.load_kv('Bldtest1.kv')
# Add click event
def bclick(self):
textinput = self.root.ids.frnum
val1= int(textinput.text)
tinput = self.root.ids.secnum
val2 = int(tinput.text)
sum_label = self.root.ids.sumlabel
sum_label.text = "Sum is: "+ str(val1+val2)
# Clear button click event
def cclick(self):
textinput = self.root.ids.frnum
textinput.text = ''
tinput = self.root.ids.secnum
tinput.text = ""
sum_label = self.root.ids.sumlabel
sum_label.text =''
MainApp().run()
【问题讨论】:
【参考方案1】:anchor_x
属性用于AnchorLayout
类,而不是TextInput
。尝试替换:
anchor_x: 'center'
与:
pos_hint: 'center_x': 0.5
查看BoxLayout documentation有关位置提示:
位置提示部分有效,具体取决于方向:
如果方向是垂直的:x、right 和 center_x 将被使用。 如果方向是水平的:y、top 和 center_y 将被使用。【讨论】:
以上是关于在 kivi 中居中文本字段的主要内容,如果未能解决你的问题,请参考以下文章
第一个 Python/Kivy/KivyMD 应用程序。无法将文本字段中的数据保存到变量 + 数据绑定到 MDList
Kivy 无法使用 ScreenManager 获取文本输入