Python 属性错误:';调整大小的碎布图片';对象没有属性';比例';
我不熟悉python和Kivy编程,所以遇到麻烦,可能会问一些简单的问题,但现在对我来说这是一个很大的障碍。我正在用kivy开发GUI。我有相机,还有一个变焦按钮。 我想当点击缩放按钮时,放大或缩小图片。 但这不起作用,我有一个错误: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
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
设置为某个值。啊哈,好的,您知道如何使用按钮缩放相机吗?我认为这是错误的…:(