2016-10-15 5 views
0

私はインターネットで自分の問題を解決しようとしました。しかし、結果はまったくありません。 だから。このコードサンプルをご覧下さい:今kivyラベルの位置の違い

class RootWidget(FloatLayout): 
    def __init__(self, **kwargs): 
     super(RootWidget, self).__init__(**kwargs) 
     btn = Button(text='Hello world') 
     btn.size_hint = (1, .3) 
     btn.pos_hint = {'top':1} 
     title = Label(text=('[color=ff3333]Hello world[/color]'), 
          font_size=str(12) + 'sp', markup=True) 
     self.add_widget(title) 
     self.add_widget(btn) 
     title.texture_update() 
     title.text_size = (Window.width, None) 
     title.height = title.texture_size[1] 
     with title.canvas: 
       Color(1., 1., 0) 
       Rectangle(size=title.size, pos=title.pos) 
     print(title.size) 
     print(title.pos) 
     print(title.texture_size) 

と画像を見て:

Label position

誰が、なぜ印刷(title.pos)を教えてもらえます(0,0)と言う、キャンバスの描画四角形(0,0)で、テキストは別の位置に表示されますか?

私はすでにこれを圧倒しました

は...ありがとうございます。

答えて

3

あなたが事のように「コンテナ」としてWidget間の違いを確認する必要があるのと、その内容 - キャンバスに描かれているものWidgetにはいくらかのスペースが必要です。 Widgetため

重要デフォルトは次のとおりです。

  • 位置    [0, 0]
  • size_hint [1, 1]
  • サイズ                [100, 100]
あなたが何をしたか

:レンダリングされたテキストは

title.height = title.texture_size[1] 
を持っているのと同じ高さを取るために、ウィジェットの [800 (by default), None]

title.text_size = (Window.width, None) 
  • セットの高さに

    1. 変更文字サイズ

      これらの変更では

      FloatLayoutは、その子のpos_hintとsize_hintプロパティを尊重します。このレイアウトでは基本的なことを忘れています。

      したがってkwargsからにsize_hint_y=Noneを入れたり、初めて設定の高さの前にtitle.size_hint_y=Noneを行うのいずれか。

      title = Label(...) 
      title.size_hint=[None, None] 
      title.size = title.texture_size 
      

      コンテナがレンダリングされたテキストをカプセル化します:size_hintが適切な方法から削除/設定されているときは、正しく使用した場合、コンテナを操作することができます。これにより、レンダリングされたテキストの位置は、コンテナ(Widget)と同じ位置になります。

      注:

      python main.py -m inspector 
      
  • +1

    それは仕事ですが、size_hintを設定した後、 'title.texture_update()'という行が1行あります。私はもっ​​とkivyのドキュメントを読むでしょう。ご協力ありがとうございます。 – stPhoenix

    0

    titleLabeltitle.canvasから描画さFloatLayoutWidgetの内側に配置されています。このため、title.pos(0,0)です。 title.textは、あなたが探している実際の位置ですが、それに伴う問題は、title.textが文字列であるとpos属性がありません:/

    +0

    こんにちは:似たようなものに遭遇すると、印刷が/ <に任意のレイアウト関連のもの>デバッグサイジング/素敵な、まだInspectorモジュールを使用するなどとして有用ではない、主に位置決め用です。返信ありがとうございます。上記の答えをお読みください。それは仕事です。 – stPhoenix

    関連する問題