只需按一个按钮,我就可以在ScrollView
内的FloatLayout
中添加小部件。
代码有点太大,所以我包含了一个Pastebinlink
所以在这段代码中,当我按下一个按钮(当下面的TextInput
中有一些文本时),它会创建一个Message
的实例,但似乎忽略了所有的放置和大小调整指令,把它放在左下角的默认大小(100x100)。为什么会这样?我曾尝试在创建实例时放入pos
属性(例如msg_stack.append(Message(pos=(50, 50))
),但它也被忽略了。我也尝试过用RelativeLayout
替换FloatLayout
,但没有成功。另外,在这种情况下,FloatLayout
是我需要坚持的吗?也许,一个GridLayout
可以让我做得更好?在
问题是你的
Message()
处于一定的占有率,但是里面的小部件不是-它们处于默认位置。在简单地说,这将向您和docs(红色警告)解释,您必须单独管理子对象的位置,因为它不是
BoxLayout
,而是一个简单的Widget
,它为每个add_widget()
取默认值并在将Message()添加到另一个小部件
Message(pos=[200,200])
时设置它在Message()中的位置还有,密码。。。这很痛苦,是的,但最大的问题是使用<;tab>;进行缩进。很想让它成功。用4个空格代替,你以后就不用麻烦了。如果不需要函数的行为方式,请避免在函数内部使用函数。在
要修复它,只需将Message()中的每个
self
替换为root
,并用pos=root.pos
手动定位内部小部件,依此类推。在相关问题 更多 >
编程相关推荐