Kivy标签左对齐和尺寸调整

时间:2017-07-17 00:34:31

标签: python label size kivy

我已经在这墙上奔跑了将近一天。我觉得我已经尝试了一切。首先,这就是我想要的和我在视觉上的东西。

这就是我现在所拥有的:

enter image description here

我想要的是:

enter image description here

在图像'CurrentHistory:\ nHeader:'是一个标签。我可以让它左对齐,但我不能得到它没有大块填充顶部和底部。我喜欢标签是正方形而不是文本周围的矩形。我现在已经Kivy'ing约2天所以请原谅我,如果我错过了超级基本的东西。

修改

我使用功能齐全的演示进行了更新。奇怪的是,.kv生成的标签完全符合我的要求,但是通过python生成的标签没有。

SegmentLayout与.kv文件中定义的GridLayout相同:(

整体布局如下:.kv

y[1439:1442]
#                         Open     High      Low    Close
# 2017-07-14 23:58:00 20.03965 25.02193 19.60128 23.73810
# 2017-07-14 23:59:00 20.03965 25.02193 19.60128 23.71598
# 2017-07-15 00:00:00 23.73816 23.73816 23.73816 23.73816
# 2017-07-15 00:01:00 23.73816 23.73816 23.71164 23.71164

python驱动程序演示

#:kivy 1.8.0

<MainWidget>
    BoxLayout
        size: root.size

        ScrollView
            id: scrlv
            size_hint: .75, 1

            GridLayout
                cols: 1
                size_hint: 1, None
                height: max(self.minimum_height, scrlv.height)

                canvas:
                    Color:
                        rgba: 150/255, 150/255, 150/255, 1
                    Rectangle:
                        pos: self.pos
                        size: self.size

                SegmentLayout

                GridLayout
                    cols: 1
                    size_hint: 1,None
                    height: self.minimum_height

                    Label
                        text: '[b]CurrentHistory:[/b]\nHeader:'
                        size_hint: (None, None)
                        halign: 'left'
                        markup: True
                        size: self.texture_size

                    TextInput
                        size_hint: (1,None)
                        height: self.minimum_height
                        text: 'Enter Text Here'

        BoxLayout
            orientation: "vertical"
            size_hint: .25, 1

            canvas:
                Color:
                    rgba: 240/255, 180/255, 80/255, 1
                Rectangle:
                    pos: self.pos
                    size: self.size

            Label
                text: "Label 1"
            Label
                text: "Label 2"

1 个答案:

答案 0 :(得分:2)

我发现以下链接https://kivy.org/docs/api-kivy.uix.label.html#kivy.uix.label.Label.halign警告不要使用halign属性。我没有halign的解决方案如下:

            BoxLayout:
                size_hint_y: None
                height: sized_label.height
                Label:
                    id: sized_label
                    text: "[b]CurrentHistory:[/b]\\nHeader:"
                    size_hint: (None, None)
                    markup: True
                    size: self.texture_size
                Label:

我将带有文字的标签放在BoxLayout中。我将尺寸高度设置为带有文本的标签大小。带文本的标签大小适合其文本大小。由于带有文本的标签不像BoxLayout那么宽,我使用另一个Label来填充空白区域。

这是您的更新代码。我把它全部放在.py文件中,因为你在评论中说过你正在努力解决这个问题。我删除了很多代码,因为它是双重的或不是必需的。我希望你现在更容易继续使用它。我还为TextInput使用了text_hint之类的东西。如果您不希望恢复这些更改应该很容易......

这是我更新的代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.factory import Factory

from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

from kivy.base import Builder

kv_string = Builder.load_string("""
BoxLayout:
    BoxLayout:
        canvas:
            Color:
                rgba: 150/255, 150/255, 150/255, 1
            Rectangle:
                pos: self.pos
                size: self.size

        ScrollView:
            id: scrlv

            GridLayout:
                cols: 1
                size_hint_y: None
                height: max(self.minimum_height, scrlv.height)

                BoxLayout:
                    size_hint_y: None
                    height: sized_label.height
                    Label:
                        id: sized_label
                        text: "[b]CurrentHistory:[/b]\\nHeader:"
                        size_hint: (None, None)
                        markup: True
                        size: self.texture_size
                    Label:

                TextInput:
                    size_hint_y: None
                    height: 80
                    hint_text: 'Enter Text Here'
                Label:

    BoxLayout:
        orientation: "vertical"
        size_hint_x: .25

        canvas:
            Color:
                rgba: 240/255, 180/255, 80/255, 1
            Rectangle:
                pos: self.pos
                size: self.size

        Label:
            text: "Label 1"
        Label:
            text: "Label 2"
""")



class MyApp(App):

    def build(self):
        return kv_string



if __name__ == '__main__':
    MyApp().run()

enter image description here