簡體   English   中英

StackLayout 中的並排標簽:為什么缺少第二個 label? (基維,蟒蛇)

[英]Side-by-side Labels in StackLayout: Why is second label missing? (kivy, python)

如何在 Kivy StackLayout 中並排顯示兩個標簽?

考慮以下代碼

#!/usr/bin/env python3

from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.app import App

KV = """
StackLayout:
    orientation: 'lr-tb'

    Label:
        text: "Hello"

    Label:
        text: "World"
"""

class MyApp(App):
    def build(self):
        return Builder.load_string( KV )

MyApp().run()

我試圖讓兩個文本標簽並排顯示。 最初我使用的是 BoxLayout 和 GridLayout,但我發現它們會使每個小部件的寬度與應用程序的寬度一致。 而我想要:

  1. 第一個 label 的寬度僅為它包含的文本所需的寬度
  2. 第二個 label 緊挨着第一個 label 放置,其中文本之間的唯一間隙是布局的spacing

不幸的是,上面的代碼甚至沒有顯示第二個 label——它根本不存在。 為什么?

帶有包含兩個標簽的 StackLayout 的 Kivy 應用程序僅顯示第一個標簽,居中於應用程序的中間。第二個標簽無處可見

如何在不使用 kivy 添加額外間距或使用StackLayout時神秘地根本不顯示我的第二個 label 的情況下,如何彼此相鄰顯示兩個標簽?

要使這項工作按預期進行,您必須:

  1. size_hint覆蓋為None
  2. 將小部件的size設置為它的texture_size (這是呈現字體所需的實際像素——但您實際上可能想用一些像素填充它)

例如

#!/usr/bin/env python3

from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.app import App

KV = """
StackLayout:
    orientation: 'lr-tb'

    Label:
        text: "Hello"
        size: self.texture_size
        size_hint: None, None

    Label:
        text: "World"
        size: self.texture_size
        size_hint: None, None
"""

class MyApp(App):
    def build(self):
        return Builder.load_string( KV )

MyApp().run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM