【问题标题】:Kivy Image Widget On Scatter Layout: How Do I Increase Image Size?分散布局上的 Kivy 图像小部件:如何增加图像大小?
【发布时间】:2017-07-19 18:26:07
【问题描述】:

我想使用 Kivy 旋转 45RPM 唱片的图像。我发现这可以使用分散布局上的图像小部件来完成。但是我似乎找不到使 45RPM 记录的图像调整大小以匹配窗口大小的代码。我已经尝试了几个小时不同的代码迭代,我变得非常沮丧。下面的完整代码带有图片链接。

有什么建议吗?

提前表示赞赏。

....布拉德....

代码图片位于: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()

【问题讨论】:

    标签: kivy kivy-language


    【解决方案1】:

    使用scale 属性:

    # 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()
    

    输出:

    我添加了灰色背景只是为了提高图像可见度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2018-12-12
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多