Kivy中AnchorLayout固定在左下角
我开始把一个非常简单的Tkinter应用程序重写成Kivy的版本,但我遇到了一个问题:我的AnchorLayout被固定在左下角,怎么也动不了。我这里有我的代码:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
class MyApp(App):
def build(self):
controls = AnchorLayout(anchor_x='left', anchor_y='top')
box = BoxLayout()
upc_l = Label(text='UPC:', font_size=40, size_hint_y=None,
size_hint_x=None, height=50, width=100,)
entry = TextInput(font_size=40, size_hint_y=None, size_hint_x=None,
height=50, width=350)
search_b = Button(text='Search', font_size=40, size_hint_y=None,
size_hint_x=None, height=50, width=200)
controls.add_widget(box)
box.add_widget(upc_l)
box.add_widget(entry)
box.add_widget(search_b)
return controls
if __name__ == '__main__':
MyApp().run()
2 个回答
1
BoxLayout会填满整个窗口,因为它的大小提示是1, 1
。它的孩子们都有手动设置的高度和宽度,所以它只是把这些孩子一个接一个地放在自己的左下角,也就是屏幕的左下角,尽管AnchorLayout工作得很好。
给BoxLayout设置一个手动大小,这样效果会更好。实际上,由于你已经手动设置了孩子的大小,使用GridLayout会更合适,GridLayout的大小会根据它的minimum_width
和minimum_height
属性来调整。
1
好的,我不知道我是不是应该自己回答自己的问题,还是只是评论一下(我刚来Stack Overflow)不过这是我昨晚经过很多小时的烦恼后搞明白的事情。谢谢你的回答,inclement。其实我一直在看你的教程。
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
class MyApp(App):
def build(self):
controls = AnchorLayout(anchor_x='right', anchor_y='top', height=200)
box = BoxLayout(size_hint_y=None, height=50)
upc_l = Label(text='UPC:', font_size=40, size_hint_x=None, width=100,)
entry = TextInput(font_size=40, size_hint_x=None, width=350)
search_b = Button(text='Search', font_size=40, size_hint_x=None,
width=200, background_color=[0,1.7,0,1])
controls.add_widget(box)
box.add_widget(upc_l)
box.add_widget(entry)
box.add_widget(search_b)
return controls
if __name__ == '__main__':
MyApp().run()