标签未正确对齐

时间:2015-01-31 16:04:25

标签: python-3.x kivy text-alignment

我在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()

输出: enter image description here

代码工作正常但是,我的问题是左边还有一些空隙,其他控件不存在。我希望用户ID完全左对齐(在上面的图片中,它左对齐,但仍留有一些空间)。

你能否就我出错的地方建议/纠正我?

1 个答案:

答案 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(这将控制文本纹理的边界框)而不是弄乱窗口小部件的大小/位置,而内置的文本对齐选项可以处理其余部分。

在这种情况下,如果不相同,这些结果应该相似。