• 大小: 975KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: kivy  demo  

资源简介

kivy 官方 开发 demo,适合初学者,全面了解kivy。涉及空间、图片、动画、3D等。

资源截图

代码片段和文件信息

‘‘‘
Shuffled Camera Feed Puzzle
===========================

This demonstrates using Scatter widgets with a live camera.
You should see a shuffled grid of rectangles that make up the
camera feed. You can drag the squares around to see the
unscrambled camera feed or double click to scramble the grid
again.
‘‘‘


from kivy.app import App
from kivy.uix.camera import Camera
from kivy.uix.widget import Widget
from kivy.uix.slider import Slider
from kivy.uix.scatter import Scatter
from kivy.animation import Animation
from kivy.graphics import Color Rectangle
from kivy.properties import NumericProperty
from random import randint random
from functools import partial


class Puzzle(Camera):

    blocksize = NumericProperty(100)

    def on_texture_size(self instance value):
        self.build()

    def on_blocksize(self instance value):
        self.build()

    def build(self):
        self.clear_widgets()
        texture = self.texture
        if not texture:
            return
        bs = self.blocksize
        tw th = self.texture_size
        for x in range(int(tw / bs)):
            for y in range(int(th / bs)):
                bx = x * bs
                by = y * bs
                subtexture = texture.get_region(bx by bs bs)
                # node = PuzzleNode(texture=subtexture
                #                  size=(bs bs) pos=(bx by))
                node = Scatter(pos=(bx by) size=(bs bs))
                with node.canvas:
                    Color(1 1 1)
                    Rectangle(size=node.size texture=subtexture)
                self.add_widget(node)

        self.shuffle()

    def shuffle(self):
        texture = self.texture
        bs = self.blocksize
        tw th = self.texture_size
        count = int(tw / bs) * int(th / bs)
        indices = list(range(count))
        childindex = 0
        while indices:
            index = indices.pop(randint(0 len(indices) - 1))
            x = bs * (index % int(tw / bs))
            y = bs * int(index / int(tw / bs))
            child = self.children[childindex]
            a = Animation(d=random() / 4.) + Animation(pos=(x y)
                                                       t=‘out_quad‘ d=.4)
            a.start(child)
            childindex += 1

    def on_touch_down(self touch):
        if touch.is_double_tap:
            self.shuffle()
            return True
        super(Puzzle self).on_touch_down(touch)


class PuzzleApp(App):
    def build(self):
        root = Widget()
        puzzle = Puzzle(resolution=(640 480) play=True)
        slider = Slider(min=100 max=200 step=10 size=(800 50))
        slider.bind(value=partial(self.on_value puzzle))

        root.add_widget(puzzle)
        root.add_widget(slider)
        return root

    def on_value(self puzzle instance value):
        value = int((value + 5) / 10) * 10
        puzzle.blocksize = value
        instance.value = value


PuzzleApp().run()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-20 11:15  demo\
     文件        2957  2018-04-20 11:15  demo\camera_puzzle.py
     目录           0  2018-04-20 11:17  demo\kivycatalog\
     目录           0  2018-04-20 11:17  demo\kivycatalog\.idea\
     文件          11  2018-04-20 11:17  demo\kivycatalog\.idea\.name
     文件         159  2018-04-20 11:17  demo\kivycatalog\.idea\encodings.xml
     文件         284  2018-04-20 11:17  demo\kivycatalog\.idea\kivycatalog.iml
     文件         701  2018-04-20 11:17  demo\kivycatalog\.idea\misc.xml
     文件         274  2018-04-20 11:17  demo\kivycatalog\.idea\modules.xml
     文件       15318  2018-04-20 11:17  demo\kivycatalog\.idea\workspace.xml
     目录           0  2018-04-20 11:15  demo\kivycatalog\container_kvs\
     文件         261  2018-04-20 11:15  demo\kivycatalog\container_kvs\AnchorLayoutContainer.kv
     文件         246  2018-04-20 11:15  demo\kivycatalog\container_kvs\BoxLayoutContainer.kv
     文件         635  2018-04-20 11:15  demo\kivycatalog\container_kvs\ButtonContainer.kv
     文件         489  2018-04-20 11:15  demo\kivycatalog\container_kvs\CheckBoxContainer.kv
     文件         430  2018-04-20 11:15  demo\kivycatalog\container_kvs\FileChooserContainer.kv
     文件         296  2018-04-20 11:15  demo\kivycatalog\container_kvs\FloatLayoutContainer.kv
     文件         355  2018-04-20 11:15  demo\kivycatalog\container_kvs\GridLayoutContainer.kv
     文件        1763  2018-04-20 11:15  demo\kivycatalog\container_kvs\LabelContainer.kv
     文件         183  2018-04-20 11:15  demo\kivycatalog\container_kvs\MediaContainer.kv
     文件         748  2018-04-20 11:15  demo\kivycatalog\container_kvs\PlaygroundContainer.kv
     文件         911  2018-04-20 11:15  demo\kivycatalog\container_kvs\PopupContainer.kv
     文件         335  2018-04-20 11:15  demo\kivycatalog\container_kvs\ProgressBarContainer.kv
     文件         220  2018-04-20 11:15  demo\kivycatalog\container_kvs\RestContainer.kv
     文件         336  2018-04-20 11:15  demo\kivycatalog\container_kvs\ScatterContainer.kv
     文件         292  2018-04-20 11:15  demo\kivycatalog\container_kvs\SelectorsContainer.kv
     文件         477  2018-04-20 11:15  demo\kivycatalog\container_kvs\StackLayoutContainer.kv
     文件         527  2018-04-20 11:15  demo\kivycatalog\container_kvs\TextContainer.kv
     文件        4695  2018-04-20 11:15  demo\kivycatalog\kivycatalog.kv
     文件        6949  2018-04-20 11:15  demo\kivycatalog\main.py
     目录           0  2018-04-20 11:15  demo\multistroke\
............此处省略64个文件信息

评论

共有 条评论