我开始为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()
答案 0 :(得分:1)
BoxLayout填充窗口,因为它的size_hint为1, 1
。它的孩子都有手动高度和宽度设置,所以它只是将它们一个接一个地放在它自身的左下角,这是屏幕的左下角,即使AnchorLayout工作正常。
给BoxLayout一个手动大小,让这项工作更好。实际上,由于您手动设置其子项的大小,因此Gridbuay的大小设置为跟踪其minimum_width
和minimum_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()