2017-07-19 1 views
2

Ich möchte mit Kivy ein Bild eines 45 RPM-Datensatzes drehen. Ich entdeckte, dass dies mit einem Bild-Widget in einem Scatter-Layout möglich ist. Allerdings kann ich den Code nicht finden, um das Bild des 45RPM-Datensatzes so anzupassen, dass er der Größe des Fensters entspricht. Ich habe stundenlang verschiedene Code-Wiederholungen ausprobiert und bin ziemlich frustriert. Vollständiger Code unten mit Link zum Bild.Kivy Image Widget On Scatter Layout: Wie vergrößere ich die Bildgröße?

Irgendwelche Vorschläge?

Im Voraus geschätzt.

.... brad ....

Bild für Code an: https://drive.google.com/open?id=0B-T2cvsAoZ2vQ2hmaHM0SnlQVlU

# Modified from https://gist.github.com/tshirtman/6222891 
from kivy.app import App 
from kivy.properties import NumericProperty 
from kivy.lang import Builder 
from kivy.clock import Clock 

kv = """ 
BoxLayout: 
    Widget: 
     Scatter: 
      center: self.parent.center 
      do_rotation: False 
      do_translation: False 
      do_scale: False 
      rotation: app.angle 
      Image: 
       source: '45rpm.png'    
""" 
class RotateRecordApp(App): 
    angle = NumericProperty(0) 
    def build(self): 
     Clock.schedule_interval(self.update_angle, 0) 
     return Builder.load_string(kv) 

    def update_angle(self, dt, *args): 
     self.angle += dt * 100 

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

Antwort

0

Verwenden scale Eigenschaft:

# Modified from https://gist.github.com/tshirtman/6222891 
from kivy.app import App 
from kivy.properties import NumericProperty 
from kivy.lang import Builder 
from kivy.clock import Clock 

kv = """ 
BoxLayout: 
    Widget: 
     # Gray background 
     canvas.before: 
      Color: 
       rgba: 0.1, 0.1, 0.1, 1 
      Rectangle: 
       pos: self.pos 
       size: self.size 

     Scatter: 
      center: self.parent.center 
      do_rotation: False 
      do_translation: False 
      do_scale: False 
      rotation: app.angle 
      scale: min(self.parent.width/self.width,\ 
         self.parent.height/self.height) 
      Image: 
       source: '45rpm.png'    
""" 
class RotateRecordApp(App): 
    angle = NumericProperty(0) 
    def build(self): 
     Clock.schedule_interval(self.update_angle, 0) 
     return Builder.load_string(kv) 

    def update_angle(self, dt, *args): 
     self.angle += dt * 100 

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

Ausgang:

enter image description here

Ich habe einen grauen Hintergrund hinzugefügt, nur um die Sichtbarkeit des Bildes zu verbessern.