我是Kivy的新手,但试图抓住它。我正在通过“在Kivy中创建应用程序”中的示例作为模板,但我甚至偶然发现了第一章。出于某种原因,我的按钮被推到应用程序的底部。我错过了一些他们正在那里出现的批评吗?
我的python文件:
import kivy
from kivy.app import App
from kivy.uix.button import Label
from kivy.uix.boxlayout import BoxLayout
# In the kv file, everything to the right of the colon is pure python
# for loading python module in kv file, use format of #: import keyword module_name
class WeatherWidget(BoxLayout):
def printing_test(self):
print('This is a test')
class DailyViewApp(App):
def build(self):
return WeatherWidget()
if __name__ == '__main__':
DailyViewApp().run()
我的kv档案:
<WeatherWidget>:
orientation: "vertical"
BoxLayout:
height: "30dp"
size_hint_y: None
Button:
text: 'New York, NY'
size_hint_x: 1
on_press: root.printing_test()
Button:
text: 'Test'
size_hint_x: 0.25
答案 0 :(得分:1)
在BoxLayout和垂直方向中,第一个小部件放置在窗口的底部,并在下面添加更多小部件时向上滚动。如果您希望它显示在窗口的顶部,则必须使用 pos ,或添加另一个boxlayout(size_hint_y = 0.9)以填充剩余空间,或添加小部件,直到它填满剩余空间。使用 pos ,您必须计算高度,如示例1所示。
pos: 0, root.height - 30
如果您要在outter boxlayout中的按钮/下面放置更多小部件,我建议使用GridLayout作为根小部件,如示例2所示。
#:kivy 1.10.0
<WeatherWidget>:
orientation: "vertical"
pos: 0, root.height - 30
BoxLayout:
height: "30dp"
size_hint_y: None
Button:
text: 'New York, NY'
size_hint_x: 1
on_press: root.printing_test()
Button:
text: 'Test'
size_hint_x: 0.25
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
# In the kv file, everything to the right of the colon is pure python
# for loading python module in kv file, use format of #: import keyword module_name
class WeatherWidget(GridLayout):
def printing_test(self):
print('This is a test')
class DailyViewApp(App):
def build(self):
return WeatherWidget()
if __name__ == '__main__':
DailyViewApp().run()
#:kivy 1.10.0
<WeatherWidget>:
cols: 1
BoxLayout:
height: "30dp"
size_hint_y: None
Button:
text: 'New York, NY'
size_hint_x: 1
on_press: root.printing_test()
Button:
text: 'Test'
size_hint_x: 0.25
答案 1 :(得分:1)
另一种解决方案是在第一个boxlayout之后放置另一个小部件,其中包含用于覆盖剩余位置的按钮
<WeatherWidget>:
orientation: "vertical"
BoxLayout:
height: "30dp"
size_hint_y: None
Button:
text: 'New York, NY'
size_hint_x: 1
on_press: root.printing_test()
Button:
text: 'Test'
size_hint_x: 0.25
BoxLayout:
size_hint_y: .9 #this is a random number that I have chosen
答案 2 :(得分:-2)
class WeatherWidget(BoxLayout):
def __init__(self,**kwargs):
super(WeatherWidget,self).__init__(**kwargs)
<WeatherWidget>:
BoxLayout:
orientation:'vertical'
BoxLayout:
id: box1
height: "40dp"
size_hint_y: None
Button:
text: 'New York, NY'
size_hint_x: 1
on_press: root.printing_test()
Button:
text: 'Test'
size_hint_x: 0.25
更改类以使其看起来像这样