我在Kivy中设置了一个网格布局,带有3个按钮和一个文本区域。三个按钮不会在0,0开始,并且不应用标签背景颜色。
这是我的主要代码
import kivy
import os
import sys
from kivy.uix.gridlayout import GridLayout
from kivy.app import App
from kivy.lang import Builder
Builder.load_file('exceltoolui.kv')
class checker_ui(GridLayout):
pass
class Checker(App):
def build(self):
return checker_ui()
if __name__ == '__main__':
Checker().run()
这是我的.kv文件代码
<checker_ui>:
rows:2
cols:1
padding: 10
spacing: 10
BoxLayout:
Button:
id:this_week_btn
text: 'This Week Report'
size_hint:(None,None)
size: root.width/3,root.height/12
Button:
id:last_week_btn
text: 'Last Week Report'
size_hint:(None,None)
size: root.width/3,root.height/12
Button:
id:confirm_btn
text: 'Start Checking'
size_hint:(None,None)
size: root.width/3,root.height/12
BoxLayout:
Label:
id:entry
text:'test'
font_size:18
multiline:True
background_color:1,50,0,1
我当前的输出在按钮上方有一个很大的黑色空间,标签没有背景颜色。我的预期输出是按钮从顶部而不是屏幕中心开始。
答案 0 :(得分:2)
在布局中设置窗口小部件而不为窗口小部件设置size_hint
时,布局将设置等距大小,因此请注意BoxLayout
占据窗口的一半。解决方案是将None
设置为size_hint_y
,使其位于顶部,高度最小。
另一方面,如果要设置背景颜色,则必须使用画布。此外,rgba
的组件位于0
到1
范围内。
对于按钮,宽度必须由布局确定,如果您设置它并且它大于布局允许的范围,您将看到不充分的设计,如图像中的第三个按钮所示,您的样本不回应填充。
<checker_ui>:
rows:2
cols:1
padding: 10
spacing: 10
BoxLayout:
size_hint_y: None
height: self.minimum_height
Button:
id:this_week_btn
text: 'This Week Report'
size_hint:(1, None)
height: root.height/12
Button:
id:last_week_btn
text: 'Last Week Report'
size_hint:(1, None)
height: root.height/12
Button:
id:confirm_btn
text: 'Start Checking'
size_hint:(1, None)
height: root.height/12
BoxLayout:
Label:
id:entry
text:'test\nTEST'
font_size:18
multiline:True
canvas.before:
Color:
rgba: 1, .5, 0, 1
Rectangle:
pos: self.pos
size: self.size