2016-01-01 87 views
5

我要为我的机器人项目创建一个Kivy UI,我唯一的问题是使用布局,我对此感到困惑。Kivy布局选择问题

我会附上我想要为其创建布局的GUI图像Kivy请指导什么是最佳选择(BOX,Grid,Relative,..)我知道我必须将它们混合在一起并使用2个或更多布局,但是我无法正确选择,我读Kivy文档,我尝试使用Kivy设计师,但我仍然无法选择最佳布局。最大窗口大小为800x600。

GUI 800x600

回答

1

我宁愿SimpleTableLayout,它在Kivy花园提供一个小部件: Simple Table Laout - Kivy Garden

如果你不知道如何使用Kivy园林这里是安装说明:How to install kivy garden

SimpleTableLayout支持行和列的跨越以及获取某个单元格的小部件:SimpleTableLayout.cell(row, col)

对于您的应用程序的一个小例子:

<SimpleTableLayout>: 
    rows:10 
    cols:14 

    <Gauge1>: 
     rowspan:2 
     colspan:2 

    <SpaceHolderWidget>: 
     rowspan:12 

    <SpaceHolderWidget>: 
     colspan: 2 

    <SmallGauge1>: 

    <SpaceHolderWidget>: 

    <SmallGauge2>: 

    <SpaceHolderWidget>: 
     colspan:2 

    <SpaceHolderWidget>: 
     rowspan:12 

    <Gauge2>: 
     rowspan:2 
     colspan:2 

    <Canvas>: 
     rowspan:5 
     colspan:7 
0

如果你不知道用哪个布局,然后使用网格布局,因为它是最通用的。

一般来说,如果您想将n个小部件放在一行中,请设置rows: 1。如果要将n个小部件放入列中,请设置cols: 1

然后,操纵size_hint来设置小部件的正确大小。

您可以使用空白标签在小工具之间创建空间。

关于Kivy Designer - 在使用此工具之前,最好先手动学习设置UI。

#:kivy 1.9.0 

<[email protected]>: 
    text: 'gauge' 

<[email protected]>: 
    cols: 1 
    size_hint_x: .2 

    RoundGauge: 
     size_hint_y: .5 
    RoundGauge: 
     size_hint_y: .5 

    GridLayout: 
     rows: 1 

     Slider: 
      orientation: 'vertical' 
     Slider: 
      orientation: 'vertical' 

# main layout divided into bottom gauges and screen part 
GridLayout: 
    cols: 1 

    canvas: 
     Color: 
      rgba: 1,1,1,.5 
     Rectangle: 
      size: self.size 

    # both side panels and screen part 
    GridLayout: 
     rows: 1 

     # left panel 
     SidePanel: 

     # middle panel 
     GridLayout: 
      cols: 1 

      # upper gauges 
      GridLayout: 
       rows: 1 
       size_hint_y: .3 

       Label: 
       RoundGauge: 
        size_hint_x: .5 
       Label: 
        size_hint_x: .1 
       RoundGauge: 
        size_hint_x: .5 
       Label: 

      Label: 
       text: 'screen' 
       canvas: 
        Color: 
         rgba: 1,1,1,.5 
        Rectangle: 
         size: self.size 
         pos: self.pos 

      # bottom gauges 
      GridLayout: 
       rows: 1 
       size_hint_y: .3 

       RoundGauge: 
       RoundGauge: 
       RoundGauge: 
       RoundGauge: 
       RoundGauge: 
       RoundGauge: 

     # right panel 
     SidePanel: 

    GridLayout: 
     rows: 1 
     size_hint_y: .2 

     RoundGauge: 
     RoundGauge: 
     RoundGauge: 
     RoundGauge: 
     RoundGauge: 
     RoundGauge: 
     RoundGauge: