gpt4 book ai didi

python kivy boxlayout设置位置

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:43 24 4
gpt4 key购买 nike

我正在使用此方法定位 BoxLayout

layout = BoxLayout(size_hint=(1, None), height=50, spacing=100, pos_hint={'y': 0.5 , 'top': 0.5})

但是它位于中间,我希望它位于 FloatLayout 的顶部中心。

运行时的代码也会给出此警告....

[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...

下面是代码:

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()

最佳答案

使用 pos_hint={'top': 1}。不要将 topy 混在一起,这两者会相互冲突,因为它们都指的是垂直位置,这是您出错的原因。

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()

同时检查使用效果:

layout = BoxLayout(size_hint=(0.5, None), height=50, pos_hint={'top': 1})

和:

layout = BoxLayout(size_hint=(0.5, None), height=50, pos_hint={'top': 1, 'center_x':0.5})

关于python kivy boxlayout设置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com