簡體   English   中英

如何在 canvas 上准確顯示 kivy 文本 label 的 position?

[英]How to I exactly the position of a kivy text label on a canvas?

我在 figma 中設計了以下內容。 我創建了一個 500px x 500px window 和一個小部件。 我想將“動態”文本放置在距左側 160px 和距頂部 207px 的位置。 人物設計

對於圖像,效果很好,但對於文本,它根本不起作用。 這是代碼

class ScreenOne(Widget):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.gif = Image(source='gifs/ring.gif', pos=(23, 191), size=(126, 119), anim_delay=0.1)
        self.gif0 = Image(source='gifs/test500.gif', pos=(0, 0), size=(500, 500), anim_delay=0.1)
        self.text1 = Label(text="1", pos=(77, 228), font_name="Inter-Bold", font_size=36)
        self.text2 = Label(text="in motion", pos=(160, 207), pos_hint=(0,0), size_hint=(0,0), font_name="Inter-Bold", font_size=64)
        self.add_widget(self.gif0)
        self.add_widget(self.gif)
        self.add_widget(self.text1)
        self.add_widget(self.text2)

環形動圖(gif)位置完美,但text2完全關閉。 見下文:

任何人都知道如何准確地放置文本標簽,就像我希望它們放置在 Figma 中一樣?

錯誤區域中的問題文本

嘗試使用標簽 pos_hint=(0,0)、size_hint=(0,0) 等。

問題是text2 Labelsize是默認大小,寬度為 100。因此實際文本將不適合該大小並以實際Label大小為中心。 所以結果是Label被正確定位,但文本超出了默認大小。

解決方法是調整Label大小以正確反映您的預期。

嘗試添加到您的代碼:

class MyLabel(Label):
    pass

Builder.load_string('''
<MyLabel>:
    size_hint: None, None
    size: self.texture_size
''')

然后在代碼的其他地方使用MyLabel代替Label

優秀 -> 這有效@John。 非常感謝。 我使用 Figma 中的尺寸按以下方式實現了它,並按以下方式添加了 size 屬性:

self.text2 = Label(text="in motion", pos=(160, 207), pos_hint=(0,0), size_hint=(0,0), size(296, 65), font_name="Inter-Bold", font_size=64)

暫無
暫無

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

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