【问题标题】:Valign not working in kivy?Valign 不能在 kivy 中工作?
【发布时间】:2018-08-28 00:57:34
【问题描述】:

我这里有这个 kivy 文件:

<Help>:
    Label:
        text: "[b]Help Page[/b]\n"
        font_size: 30
        markup: True
        valign: "top"
        color: 0,0,0,1
    Label:
        text: "[b] How To Use:[/b]\n"
        font_size: 30
        markup: True
        valign: 'top'
        color: 0,0,0,1

但是,文本不会转到页面顶部。这是输出:

这有什么问题?我还可以问一下如何格式化那些重叠的文本。谢谢:)

编辑: 这就是我希望文本发生的事情:

想要的输出

所以为了得到这个结果,我尝试使用 valign 和 halign 来格式化文本,但它似乎不起作用。希望这能澄清我的问题:)

【问题讨论】:

  • 什么是Help
  • 帮助是一个屏幕,应该显示一个帮助页面:)
  • 你可以展示你想要得到的东西的图片,我认为你会误入歧途,你在XY problem

标签: python python-3.x kivy kivy-language


【解决方案1】:

在顶部显示文本

要使用 valign: 'top' 在顶部显示文本,请将 text_size: root.width, None 替换为 text_size: root.width, root.height

片段

<Help>:
    Label:
        id: help
        text_size: root.width, root.height
        markup: True
        valign: 'top'
        halign: 'center'
        color: 0,0,0,1

输出

将两个字符串显示为一个

要将“How to Operate: Some text here”和“Some title Some more text”这两个字符串显示为一个,我们将执行以下操作: p>

kv 文件

<Help>:
    Label:
        id: help
        text_size: root.width, None
        markup: True
        halign: 'center'
        color: 0,0,0,1

Python 代码

class Help(Screen):

    def on_pre_enter(self, *args):
        self.ids.help.text = "[size=30][b]How to Operate[/b][/size]\nSome text here" + \
                             "\n\n[size=30][b]Some title[/b][/size]\nSome more text"

输出 - 组合文本

文字重叠

标签的文本重叠,因为您在屏幕布局中将两个标签小部件相互叠加。

添加一个 BoxLayout 作为两个 Label 小部件的父级,以防止文本重叠。

文字环绕

以一定宽度包裹文本,提供宽度。例如,要在宽度为 200 且高度不受限制的框中创建标签。

Label(text='Very big big line', text_size=(200, None))

片段

<Help>:
    BoxLayout:
        orientation: 'vertical'

        Label:
            text_size: dp(230), None
            height: self.texture_size[1]
            text: "[size=30][b]How to Operate[/b][/size]Some text here"
            markup: True
            valign: "top"
            halign: 'center'
            color: 0,0,0,1

        Label:
            text_size: dp(150), None
            text: "[size=30][b]Some title[/b][/size]Some more text"
            markup: True
            valign: 'top'
            halign: 'center'
            color: 0,0,0,1

输出

文本对齐

添加text_size: self.size

片段

<Help>:
    Label:
        text_size: self.size
        text: "[b]Help Page[/b]\n"
        font_size: 30
        markup: True
        valign: "top"
        color: 0,0,0,1
    Label:
        text_size: self.size
        text: "[b] How To Use:[/b]\n"
        font_size: 30
        markup: True
        valign: 'top'
        color: 0,0,0,1

Text alignment and wrapping

为了使halignvalign 对齐属性 生效,设置text_size,指定大小 文本对齐的边界框。

输出

【讨论】:

  • 该解决方案有效,但如果我想在“如何操作”文本下方添加一个文本,我该怎么做?
  • 我可以不将两者结合起来,以便我可以格式化它并且不让文本重叠吗?
  • 请参阅更新后的帖子以获取显示两个字符串的解决方案,“如何操作:这里有一些文本”和“一些标题还有一些文本 " 作为一个,即只使用一个标签小部件。
  • halign 可以正常工作,但是当我将它设置为“顶部”时,它仍然保留在中心。是不是说我这里只能用halign,不能用valign?
  • 有关在顶部显示文本的解决方案,请参阅更新后的帖子。
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2020-02-18
相关资源
最近更新 更多