AnchorLayout卡在Kivy的左下角

时间:2014-08-21 03:11:14

标签: python kivy

我开始为kivy重写一个非常简单的Tkinter应用程序,我遇到了一个问题,我的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 个答案:

答案 0 :(得分:1)

BoxLayout填充窗口,因为它的size_hint为1, 1。它的孩子都有手动高度和宽度设置,所以它只是将它们一个接一个地放在它自身的左下角,这是屏幕的左下角,即使AnchorLayout工作正常。

给BoxLayout一个手动大小,让这项工作更好。实际上,由于您手动设置其子项的大小,因此Gridbuay的大小设置为跟踪其minimum_widthminimum_height属性,您会更好。

答案 1 :(得分:1)

好吧我不知道我是应该回答我自己的问题还是仅仅评论(SO的新内容),但这是我昨晚经过数小时的挫折后想出来的。谢谢你的回答,包括恶意。我一直在看你的教程。

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()