gpt4 book ai didi

python - 在 Kivy 的 StackLayout 中将小部件居中

转载 作者:行者123 更新时间:2023-11-28 19:16:37 24 4
gpt4 key购买 nike

我正在尝试将小部件水平居中放置在 StackLayout 中,但我是新手而且数学不是很好,无法理解正确的公式。 StackLayout 中的每个小部件宽度为 128 像素,每个小部件之间的间距为 20 像素。这是我拥有的:

padding: ((root.width - ((int((root.width - ((int(root.width / 128) - 1) * 20)) / 128) - 1) * 20)) % 128) / 2, 0, 0, 0
spacing: 20

它在某种程度上运作良好。例如,当窗口宽度最大为 255 像素时,它会完美地将每行一个 128 像素的小部件居中。但是,一旦窗口的大小调整为 256 像素宽,每个小部件就会被定位在最左边,填充为 0。当我将窗口的宽度从 256 增加到 275 时,填充将依次增加。在 276 像素宽处,小部件快速回到最左边的位置,填充为 0,然后将第二个小部件放置在每一行上(这很好,它应该如何工作)。

在公式中插入一个值,我明白了为什么会发生这种情况,但我只是不确定如何解决它。任何帮助,将不胜感激。谢谢。

最佳答案

使用 GridLayout 更容易实现这一点。对于不同大小的按钮和 20 的间距,它看起来像这样:

enter image description here

诀窍是放置两个虚拟小部件来填充两侧的空间(因为默认 size_hint 是 1,1):


代码示例

您需要使用 size 参数运行以下示例来控制窗口的大小(或者您可以使用鼠标缩小它):

python gridlayout.py --size=500x30

你需要两个文件。首先,gridlayout.kv:

<GridLayout>:
rows: 1
spacing: 20

Widget:
Button:
text: 'A'
size_hint: None, 1
width: 25
Button:
text: 'B'
size_hint: None, 1
width: 50
Button:
text: 'C'
size_hint: None, 1
width: 25
Widget:

其次,python代码gridlayout.py:

import kivy

from kivy.app import App
from kivy.uix.gridlayout import GridLayout

class GridLayoutApp(App):
def build(self):
return GridLayout()

if __name__=="__main__":
GridLayoutApp().run()

关于python - 在 Kivy 的 StackLayout 中将小部件居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832861/

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