2017-04-13 63 views
0

內部kivy插件我目前編碼與kivy(1.9.1)的應用程序與感謝4小部件被劃分到一個GridLayout的(2×2)。我搜尋有兩個上面的翻轉180°。我試過用ScatterLayout來做,但單元格跳到右下角... 我試圖插入一個Wi​​dget中的Scatter,但我沒有找到如何正確設置大小。旋轉「複雜的」一個GridLayout的

我讀使用下面的代碼,以優化ressources消費:

 canvas.before: 
      PushMatrix 
      Rotate: 
       angle: 180 
       origin: self.center 
     canvas.after: 
      PopMatrix 

它工作在乍看之下,但「接觸區」不幸不旋轉。

的只有兩件事情我發現是把ScatterLayout內AnchorLayout或使用以前的代碼爲每一個孩子......

我認爲這是一個更好的解決辦法,但我已經無法到目前爲止找到它。

請各位看看下面我.kv文件的什麼我嘗試編譯:

GridLayout: 
    cols: 2 
    rows: 2 

    AnchorLayout: 
     ScatterLayout: 
      center: self.parent.center 
      do_rotation: False 
      do_translation: False 
      do_scale: False 
      rotation: 180 

      GridLayout: 
       cols: 2 
       Button: 
        text: '1.1' 
       Button 
        text: '1.2' 

    Button: 
     text: '2' 

    GridLayout: 
     size: self.parent.size 
     center: self.parent.center 
     cols: 3 

     Button: 
      canvas.before: 
       PushMatrix 
       Rotate: 
        angle: 180 
        origin: self.center 
      canvas.after: 
       PopMatrix 
      text: '3.1' 

     Button: 
      canvas.before: 
       PushMatrix 
       Rotate: 
        angle: 180 
        origin: self.center 
      canvas.after: 
        PopMatrix 
      text: '3.2' 

     GridLayout: 
      size: self.parent.size 
      center: self.parent.center 
      rows: 2 

      canvas.before: 
       PushMatrix 
       Rotate: 
        angle: 180 
        origin: self.center 
      canvas.after: 
       PopMatrix 

      Button: 
       text: '3.3.1' 
      Button: 
       text: '3.3.2' 

    Button: 
     text: '4' 

的.py文件是沒有什麼比這更:

from kivy.app import App 

class MainApp(App): 
    pass 

if __name__ == '__main__': 
    MainApp().run() 

謝謝提前。

回答

0

是您可以使用分散這一點。
試試這個:

from kivy.app import App 
from kivy.uix.gridlayout import GridLayout 
from kivy.lang import Builder 


KV = ''' 

MyGrid: 
    rows: 2 
    cols: 2 
    BoxLayout: 
     id: w1 
     Scatter: 
      size: w1.size 
      rotation: 180 
      do_rotation: False 
      Button: 
       size: w1.size 
       text: "Label1" 

    BoxLayout: 
     id: w2 
     Scatter: 
      size: w2.size 
      rotation: 180 
      do_rotation: False 
      Button: 
       size: w2.size 
       text: "Label2" 

    Button: 
     text: "Label3" 
    Button: 
     text: "Label4" 

''' 



class MyGrid(GridLayout): 
    pass 


class MyApp(App): 

    def build(self): 
     return Builder.load_string(KV) 


MyApp().run()