我构建的以下应用程序共有4个小部件,其中1个主要小部件包含3个Button小部件。我试图将按钮在主窗口小部件/屏幕上居中,但是即使屏幕大得多,主窗口小部件的宽度和高度尺寸似乎也只有100,100。因此,当我尝试将按钮居中放置在屏幕上时,它仍然位于左下角。我可以通过手动设置坐标以将按钮居中放置在窗口上来更改每个按钮的center_x和center_y,但是一旦我调整窗口大小,按钮将不再居中。关于如何获取当前屏幕尺寸和宽度的任何想法,无论窗口大小如何,按钮都将始终位于正确的位置?这是我到目前为止的内容:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
class MyApp(App):
def build(self):
start=Widget()
startbtn=Button(text="Start")
optionsbtn=Button(text="Options")
exitbtn=Button(text="Exit")
start.add_widget(startbtn)
start.add_widget(optionsbtn)
start.add_widget(exitbtn)
startbtn.center=(start.width,start.height)
optionsbtn.center_x+=200
optionsbtn.center_y+=100
exitbtn.center=start.center
return start
if __name__=="__main__":
MyApp().run()
如果进行测试,您会发现退出按钮不在居中,而只是位于左下角。
你的start
小部件只是有默认的大小100, 100
在您设定的其他中心性质的点。即使将其添加到布局中(直到您的功能完成后才生效),这都是正常的行为。在这种情况下,即使这样也没关系,因为开始没有设置大小,也没有添加任何内容,因此没有理由将其大小设置为其他大小。
通常,对于kivy,您想以不同的方式工作-不要尝试仅设置一次类似大小的内容,而是将其绑定到另一个小部件的大小,然后它将被自动更新。在这种情况下,您可以执行例如start.bind(center=startbtn.setter('center'))
,这是获得设置startbtn中心的函数的一个技巧-每当start
中心发生变化时都会调用该函数。
即使在这里过分杀伤,最好还是使用布局类(例如:anchorlayout)作为顶层窗口小部件。这将为您完成所有工作,并自动将其子项居中。您可以在其他布局中插入其他3个按钮,以使其具有相对位置。
使用kv语言也使此操作变得更容易,该语言仅根据属性引用自动创建绑定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句