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