Reputation: 7126
I am positioning the BoxLayout using this method
layout = BoxLayout(size_hint=(1, None), height=50, spacing=100, pos_hint={'y': 0.5 , 'top': 0.5})
however it centers in the middle, i want it to be placed in the top centre of the FloatLayout.
Also the code when run gives this warning....
[CRITICAL ] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
[CRITICAL ] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
[CRITICAL ] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
[CRITICAL ] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
[CRITICAL ] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
[INFO ] [Base ] Leaving application in progress...
below is the code:
import kivy
from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.video import Video
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import *
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from random import random
from kivy.properties import ListProperty
kv = '''
<ColoredLabel>:
size: (100,100)
background_color:
canvas.before:
Color:
rgba: self.background_color
Rectangle:
pos: self.pos
size: self.size
'''
Builder.load_string(kv)
class ColoredLabel(Label):
background_color = ListProperty((0,0,0,1))
class MyApp(App):
def build(self):
f = FloatLayout()
g = GridLayout(cols=5, rows=2, row_force_default=True, row_default_height=80)
layout = BoxLayout(size_hint=(1, None), height=50, spacing=100, pos_hint={'y': 0.5 , 'top': 0.5})
v = Video(source='driver.mp4', state='play', options={'eos':'loop'})
l1 = Label(text="jenkins", font_size=32)
l2 = Label(text="git", font_size=32)
f.add_widget(v)
"""
label1 = ColoredLabel(text="jenkins output", pos_hint={'top': 1, 'right': .1}, size_hint=(None, None) , background_color=(160,160,160,.5))
f.add_widget(label1)
label2 = ColoredLabel(text="git output", pos_hint={'top': 1, 'right': .5}, size_hint=(None, None) , background_color=(160,160,160,.5))
f.add_widget(label2)
label3 = ColoredLabel(text="dev output", pos_hint={'top': 1, 'right': .8}, size_hint=(None, None) , background_color=(160,160,160,.5))
f.add_widget(label3)
"""
text1 = "jenkins"
label1 = ColoredLabel(text=text1, background_color=(160,160,160,.5))
layout.add_widget(label1)
label2 = ColoredLabel(text="git", background_color=(160,160,160,.5))
layout.add_widget(label2)
label3 = ColoredLabel(text="portal", background_color=(160,160,160,.5))
layout.add_widget(label3)
f.add_widget(layout)
return f
if __name__ == "__main__":
MyApp().run()
Upvotes: 0
Views: 11179
Reputation: 8747
Use pos_hint={'top': 1}
. Don't mix top
with y
, those two conflict with themselves as they both refer to verical position, which is the cause of your erros.
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ListProperty
kv = '''
<ColoredLabel>:
size: (100,100)
background_color:
canvas.before:
Color:
rgba: self.background_color
Rectangle:
pos: self.pos
size: self.size
'''
Builder.load_string(kv)
class ColoredLabel(Label):
background_color = ListProperty((0,0,0,1))
class MyApp(App):
def build(self):
f = FloatLayout()
layout = BoxLayout(size_hint=(1, None), height=50, pos_hint={'top': 1})
label1 = ColoredLabel(text="jenkins", background_color=(160,160,160,.5))
layout.add_widget(label1)
label2 = ColoredLabel(text="git", background_color=(160,160,160,.5))
layout.add_widget(label2)
label3 = ColoredLabel(text="portal", background_color=(160,160,160,.5))
layout.add_widget(label3)
f.add_widget(layout)
return f
if __name__ == "__main__":
MyApp().run()
Also check out effect of using:
layout = BoxLayout(size_hint=(0.5, None), height=50, pos_hint={'top': 1})
and:
layout = BoxLayout(size_hint=(0.5, None), height=50, pos_hint={'top': 1, 'center_x':0.5})
Upvotes: 2