私はKivyの新機能ですが、キャンバスにテキストを配置しようとしていますが、使用している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)
結果は以下のようになります。あなたが予想されるが、Label
はどちらもセンタリングされていないにも持っていてRectangle
位置を水平方向にセンタリングされて見ることができるように
右の高さ位置。
なぜ違いがあるのか教えてください。
ありがとうございます!
ご返信ありがとうございます。 OK、私は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'については、ウィジェットは、それらの値(主にレイアウト)で動作することができる親に追加された場合、それらの値と共に動作します。 'Label'を' MyClass'の 'canvas'に描画している間に完全に別個のPythonオブジェクトとして作成しました。したがって、parent = no' size_hint'は使われませんでした。 – KeyWeeUsr