Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';调整大小的碎布图片';对象没有属性';比例';_Python_Camera_Kivy_Kivy Language_Raspberry Pi4 - Fatal编程技术网

Python 属性错误:';调整大小的碎布图片';对象没有属性';比例';

Python 属性错误:';调整大小的碎布图片';对象没有属性';比例';,python,camera,kivy,kivy-language,raspberry-pi4,Python,Camera,Kivy,Kivy Language,Raspberry Pi4,我不熟悉python和Kivy编程,所以遇到麻烦,可能会问一些简单的问题,但现在对我来说这是一个很大的障碍。我正在用kivy开发GUI。我有相机,还有一个变焦按钮。 我想当点击缩放按钮时,放大或缩小图片。 但这不起作用,我有一个错误: if self.scale < 10 : AttributeError: 'ResizableDraggablePicture' object has no attribute 'scale' 如果self.scale

我不熟悉python和Kivy编程,所以遇到麻烦,可能会问一些简单的问题,但现在对我来说这是一个很大的障碍。我正在用kivy开发GUI。我有相机,还有一个变焦按钮。 我想当点击缩放按钮时,放大或缩小图片。 但这不起作用,我有一个错误:

     if self.scale < 10 :
AttributeError: 'ResizableDraggablePicture' object has no attribute 'scale'
如果self.scale<10:
AttributeError:“ResizebledRaggablePicture”对象没有属性“scale”
这是我的代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import ScreenManager , Screen
from kivy.uix.image import Image
from kivy.core.window import Window
from kivy.base import runTouchApp
from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
import time
from kivy.core.window import Window

Window.size = (1000, 700)

class ResizableDraggablePicture(Screen):
    def on_touch_down(self, touch):
        if touch.is_mouse_scrolling:
            if touch.button == 'scrolldown':
                if self.scale < 10:
                    self.scale = self.scale * 1.1
            elif touch.button == 'scrollup':
                if self.scale > 1:
                    self.scale = self.scale * 0.8
        else:
            super(ResizableDraggablePicture, self).on_touch_down(touch)


class MainPage(Screen):
    pass

class WindowManager(ScreenManager):
    pass

class CameraClick(Screen):
    def capture(self):
        camera = self.ids['camera']
        timestr = time.strftime("%Y%m%d_%H%M%S")
        camera.export_to_png("IMG_{}.png".format(timestr))
        print("Captured")

     


Builder.load_string("""

#:import utils kivy.utils
<WindowManager>:
    CameraClick:
    ResizableDraggablePicture:

<ResizableDraggablePicture>:
    name :app.root.current = "resizableDraggablePicture"   


<CameraClick>:

    name: "camera"
    orientation: 'vertical'    
    resolution: (1000, 500)

    Camera:
        id: camera
        play: False
        allow_stretch: True
        
    BoxLayout:
        orientation: 'vertical'
        padding: 50 , 50 , 50 , 50
        spacing: 5   

        ToggleButton:
            text: 'Play'
            on_press: camera.play = not camera.play
            size_hint_y: None
            height: '48dp'
        Button:
            text: 'Capture'
            size_hint_y: None
            height: '48dp'
            on_press: root.capture()
            
            
    BoxLayout:
        orientation: 'vertical'
        padding: 500 , 400 , 600 , 650
    

        ToggleButton:
            text: 'Zoom'
            font_size:12
            height: 70
            width: 50
            on_press: "resizableDraggablePicture"     

""")

class Shenacell(MDApp):
    def build(self):
        # self.theme_cls.theme_style = "Dark"
        self.theme_cls.primary_palette = "BlueGray"
        return WindowManager()

if __name__ == '__main__' :
    Shenacell().run()
从kivy.app导入应用
从kivy.uix.widget导入widget
从kivy.lang导入生成器
从kivy.properties导入ObjectProperty
从kivy.uix.screenmanager导入screenmanager,屏幕
从kivy.uix.image导入图像
从kivy.core.window导入窗口
从kivy.base导入runTouchApp
从kivymd.app导入MDApp
从kivy.uix.boxlayout导入boxlayout
导入时间
从kivy.core.window导入窗口
Window.size=(1000700)
类大小可调整的RaggablePicture(屏幕):
def on_触控向下(自身,触控):
如果touch.is\u鼠标\u滚动:
如果touch.button==“向下滚动”:
如果自评量表<10:
self.scale=self.scale*1.1
elif touch.button=='scrollup':
如果self.scale>1:
self.scale=self.scale*0.8
其他:
超级(可调整大小的RaggablePicture,self)。打开触摸屏向下触摸屏(触摸屏)
类主页(屏幕):
通过
类WindowManager(屏幕管理器):
通过
类CameraClick(屏幕):
def捕获(自我):
camera=self.ids['camera']
timestr=time.strftime(“%Y%m%d\u%H%m%S”)
camera.export_to_png(“IMG_{}.png.format(timestr))
打印(“捕获”)
生成器。加载\u字符串(“”)
#:导入utils kivy.utils
:
摄影机单击:
调整大小的碎布图片:
:
名称:app.root.current=“resizebledraggablepicture”
:
名称:“照相机”
方向:“垂直”
决议:(1000500)
摄像机:
id:照相机
剧本:假
允许拉伸:真
盒子布局:
方向:“垂直”
填充:50,50,50,50
间距:5
切换按钮:
文字:“播放”
按:camera.play=不按camera.play
尺寸提示:无
高度:“48dp”
按钮:
文本:“捕获”
尺寸提示:无
高度:“48dp”
on_press:root.capture()
盒子布局:
方向:“垂直”
填充:500400600650
切换按钮:
文本:“缩放”
字体大小:12
身高:70
宽度:50
关于新闻界:“调整大小的图片”
""")
Shenacell类(MDApp):
def生成(自):
#self.theme\u cls.theme\u style=“深色”
self.theme\u cls.primary\u palete=“蓝灰色”
返回WindowManager()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
Shenacell().run()
我在这里删除了一些额外的代码。
不管怎样,当我运行代码并单击缩放按钮时,屏幕将变白并出现该错误。

关于该错误,您不了解什么?显然,
self.scale
没有定义。我如何定义它?我应该安装一些东西吗?不,您应该编写python代码,将
self.scale
设置为某个值。啊哈,好的,您知道如何使用按钮缩放相机吗?我认为这是错误的…:(