我在eclipse luna上使用pydev。我的kv文件如下:
<LoginForm>:
userid: userid
password: password
size_hint_x: 0.5
size_hint_y: None
height: 200
orientation: 'vertical'
pos_hint: {'center_x': 0.5,'center_y':0.5}
minimum_height: 100
minimum_width: 100
#User ID
Label:
text: 'User ID'
font_size: 20
size_hint_x: None
TextInput:
id: userid
font_size: 20
#User PW
Label:
text: 'Password'
font_size: 20
TextInput:
id: password
password: True
font_size: 20
Button:
text: 'Login'
我的python代码是:
from kivy.app import App;
from forms.login import LoginForm;
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
class LoginForm(BoxLayout):
def __init__(self, **kwargs):
super(LoginForm, self).__init__(**kwargs)
class StartApp(App):
def build(self):
Window.size = (480, 800)
return LoginForm()
#return StartApp();
if __name__ == '__main__':
StartApp().run()
输出:
代码工作正常但是,我的问题是左边还有一些空隙,其他控件不存在。我希望用户ID完全左对齐(在上面的图片中,它左对齐,但仍留有一些空间)。
你能否就我出错的地方建议/纠正我?
答案 0 :(得分:2)
标签不是左对齐的,因为您实际上没有设置它,通过禁用size_hint_x,它只需要默认宽度为100像素,文本就会显示在其中心。
您有两种声明标签的选项。
Label:
text: 'User ID'
font_size: 20
size_hint_x: None
width: self.texture_size[0]
这会将Label的宽度设置为包含文本图像的纹理的确切大小。但是,我认为最好做以下事情:
Label:
text: 'User ID'
font_size: 20
text_size: self.size
halign: 'left'
valign: 'middle'
这样,您可以设置text_size(这将控制文本纹理的边界框)而不是弄乱窗口小部件的大小/位置,而内置的文本对齐选项可以处理其余部分。
在这种情况下,如果不相同,这些结果应该相似。