2016-12-27 140 views
0

我的目标是让按钮完全充满图像。我的屏幕分成两半。在右侧,我想有九个按钮,每个按钮都完全填充不同的图像,所有按钮的尺寸相同。我想重塑这些图像以适应按钮,所以比例可能不得不改变。kivy图像按钮的大小和位置

这就是我的GUI现在的样子。这些图像不适合

enter image description here

我在KV文件试过几次调整按钮

,但现在我卡住了。

这是我的kv文件。

RadioRoot: 
<[email protected]>: 
    BoxLayout: 
     BoxLayout: 
      BoxLayout: 
       orientation: "vertical" 
       Label: 
        size_hint_y: 4 
        text: "info about radio" 
       BoxLayout: 
        size_hint_y: 1 
        BoxLayout: 
         orientation: "vertical" 
         BoxLayout: 
          Button: 
           text: "Previous" 
           on_press: root.previous() 
          Button: 
           text: "Play/Stop" 
           on_press: root.play_stop() 
          Button: 
           text: "Next" 
           on_press: root.next() 
       Button: 
        size_hint_y: 1 
        text: "Shutdown" 
        on_press: root.shutdown() 

     BoxLayout: 
      BoxLayout: 
       orientation: "vertical" 
       BoxLayout: 


        Button: 
         text: "Channel1" 
         on_press: root.channel(1) 
         #size_hint_y: None 
         #size_hint_x: None 
         Image: 
          source: 'swr3.png' 
          size_hint_y: None 
          size_hint_x: None 
          y: self.parent.y + .5* self.parent.height -.5 * self.parent.width/self.image_ratio 
          x: self.parent.x 
          #heigth: self.parent.width/self.image_ratio 
          #heigth: self.parent.height 
          width: self.parent.width 
          keep_ratio: True 
          allow_stretch: True 
        Button: 
         text: "Channel2" 
         on_press: root.channel(2) 
         Image: 
          source: 'flux.png' 
          width: self.parent.width 
          size_hint_y: None 
          size_hint_x: None 
          y: self.parent.y + .5* self.parent.height -.5 * self.parent.width/self.image_ratio 
          x: self.parent.x 

          keep_ratio: True 
          allow_stretch: True 
        Button: 
         text: "Channel3" 
         on_press: root.channel(3) 
       BoxLayout: 

        Button: 
         text: "Channel4" 
         on_press: root.channel(4) 
        Button: 
         text: "Channel5" 
         on_press: root.channel(5) 
        Button: 
         text: "Channel6" 
         on_press: root.channel(6) 
       BoxLayout: 

        Button: 
         text: "Channel7" 
         on_press: root.channel(7) 
        Button: 
         text: "Channel8" 
         on_press: root.channel(8) 
        Button: 
         text: "Channel9" 
         on_press: root.channel(9) 

这是对应的Python文件

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.label import Label 


class PhilippsRadioApp(App): 
    pass 

class RadioRoot(BoxLayout): 

    def previous(self): 
     print("Previous") 

    def play_stop(self): 
     print("Play/Stop") 


    def next(self): 
     print("Next") 

    def shutdown(self): 
     print("Shutdown") 

    def channel(self, num): 
     print("Channel") 


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

回答

0

在您的图片标签使用的是宽而不是大小...

尝试:

Image: 
    ... 
    size: self.parent.size #I think you can remove the size hints since they don't add anything... 
    stretch: True #keep this one as well :) 
+0

谢谢,工作完美。我也将keep_ratio设置为False。 – PalimPalim