Python Kivy中的小部件定位不正确
只需按下一个按钮,我就可以将小部件添加到Python Kivy中的小部件定位不正确,python,python-3.x,kivy,Python,Python 3.x,Kivy,只需按下一个按钮,我就可以将小部件添加到滚动视图中的浮动布局。 代码有点太大了,所以我包含了一个粘贴库 因此,在该代码中,当我按下按钮时(当下方的TextInput中有一些文本时),它会创建一个消息的实例,但似乎忽略了所有的放置和大小调整说明,将其以默认大小(100x100)放在左下角。为什么会这样?我在创建实例时尝试过使用pos属性(例如msg\u stack.append(Message(pos=(50,50))),但它也被忽略了。我还尝试用一个RelativeLayout替换FloatLa
滚动视图
中的浮动布局
。
代码有点太大了,所以我包含了一个粘贴库
因此,在该代码中,当我按下按钮时(当下方的
TextInput
中有一些文本时),它会创建一个消息的实例,但似乎忽略了所有的放置和大小调整说明,将其以默认大小(100x100)放在左下角。为什么会这样?我在创建实例时尝试过使用pos
属性(例如msg\u stack.append(Message(pos=(50,50))
),但它也被忽略了。我还尝试用一个RelativeLayout
替换FloatLayout
,但没有起作用。另外,在这种情况下,FloatLayout
是我需要坚持的吗?也许,GridLayout
可以做得更好?问题是你的消息()
处于特定的位置,但内部的小部件不是-它们处于默认位置
简单地说,这将向您和(红色警告)解释,您必须单独管理子项的位置,因为它不是例如BoxLayout
,而是一个简单的小部件
,它为每个添加小部件()取默认值
:
画布:
颜色:
rgba:1,0,0,1
矩形:
大小:self.size
pos:self.pos
当您将消息添加到另一个小部件Message(pos=[200200])
此外,代码…这是痛苦的,是的,但最大的是用于缩进。让它工作起来很有意思。使用4个空格,你将来会省去麻烦。如果你不需要函数内部的函数以这种方式工作,请避免使用函数内部的函数
要修复它,只需将消息()中的每个self
替换为root
,并使用pos=root.pos
手动定位内部小部件,依此类推。问题是你的Message()
处于特定位置,但内部小部件不在-它们处于默认位置
简单地说,这将向您和(红色警告)解释,您必须单独管理子项的位置,因为它不是例如BoxLayout
,而是一个简单的小部件
,它为每个添加小部件()取默认值
:
画布:
颜色:
rgba:1,0,0,1
矩形:
大小:self.size
pos:self.pos
当您将消息添加到另一个小部件Message(pos=[200200])
此外,代码…这是痛苦的,是的,但最大的是用于缩进。让它工作起来很有意思。使用4个空格,你将来会省去麻烦。如果你不需要函数内部的函数以这种方式工作,请避免使用函数内部的函数
要修复它,只需将消息()中的每个self
替换为root
,并使用pos=root.pos
手动定位内部小部件,依此类推。在消息()中设置定位,因为默认情况下,小部件
需要pos=[0,0]
和大小=[100100]
msg\u stack.append(Message(pos=[200100]))
例如。@KeyWeeUsr,是的,我提到过尝试,仍然是一样的:(你应该重写程序,直到它变小。这样的混乱会把你推入维护地狱。不要在build
方法中写任何东西,不要在小部件中包含所有逻辑,并且在kv文件/string中包含结构。在Message()
本身中设置定位,因为默认情况下,小部件
使用pos=[0,0]
和size=[100100]
msg_stack.append(Message(pos=[200100]))
例如。@KeyWeeUsr,是的,我提到过尝试,但仍然一样:(你应该重写程序,直到它变小。这样的混乱会把你推入维护的地狱。不要用build
方法编写任何东西,在小部件中包含所有逻辑,并用kv文件/字符串进行结构。
<Message>:
canvas:
Color:
rgba: 1, 0, 0, 1
Rectangle:
size:self.size
pos: self.pos