1
我真的是新的基維和我試圖在畫布上放置一些文本,但我發現我使用的Label
未正確定位。如果我使用相同的值繪製Rectangle
,它具有正確的位置。Kivy:標籤有另一個位置,然後矩形
我在這裏發現了一些類似的問題,但我認爲我沒有答案。
這裏是我的代碼:
class MyClass(Widget):
def __init__(self, **kwargs):
super(MyClass, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
self._keyboard.bind(on_key_down=self._on_keyboard_down)
def _keyboard_closed(self):
pass
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
with self.canvas:
lbl_staticText = Label(font_size=12)
lbl_staticText.text = 'This is some nice random text\nwith linebreak'
lbl_staticText.texture_update()
textSize = lbl_staticText.texture_size
Rectangle(pos=(1024/2 - textSize[0]/2, 600), size=(textSize[0], textSize[1])); #Rectangle with same position and same size
lbl_staticText.pos = (1024/2 - textSize[0]/2, 600)
結果是這樣的:
正如你可以看到如預期的那樣Rectangle
位置水平居中,但Label
既不中心也有正確的高度位置。
請你能告訴我爲什麼有區別嗎?
謝謝!
感謝您的回覆。好吧,我不知道texture_size與label.size不同。我認爲這是我想念的一點。你提到了size_hint。考慮到這個問題,它有什麼問題?我沒有得到這個問題的背景。 –
@ S-Man看看['Label.texture_size'](https://kivy.org/docs/api-kivy.uix.label.html#kivy.uix.label.Label.texture_size)看看發生了什麼。關於'size_hint',那麼,如果一個小部件被添加到可以使用這些值(主要是佈局)的父項中,那麼它將與這些值一起工作。在繪製「MyClass」的'canvas「時,您將'Label'創建爲完全獨立的Python對象,因此不使用parent = no'size_hint'。 – KeyWeeUsr