将UIImagePickerController添加到KivyIOApp(Python)

2024-05-16 15:54:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从kivy应用程序访问iOS设备上的图像/照片库。 Kivy没有实现这种方法,所以我尝试用kivy/pyobjus来解决它 在那里我可以使用UIImagePickerController(来自Apple UIKit)

from kivy.app import App
from kivy.lang import Builder
from pyobjus import autoclass, protocol



class TestApp(App):

    ui = Builder.load_file("main.kv")
    def build(self):
        return self.ui

    def imagePicker(self):
        UIImagePickerController = autoclass('UIImagePickerController')
        self.picker = UIImagePickerController.alloc().init()
        self.picker.delegate = self
        self.picker.sourceType = 0

        @protocol('UIImagePickerControllerDelegate')
        def imagePickerControllerDidFinish(self, image):
           print("ABC")

ui只是一个按钮,它调用imagePicker函数。 我对该代码有三个问题:

  1. 如何显示imagePicker
  2. 当我使用imagePicker.delegate=self时,应用程序崩溃是因为

    [...] delegate, but there is no @protocol methods declared.

    但是我声明了一个带有“@protocol('UIImagePickerControllerDelegate')”的协议 那么为什么它不使用我声明的协议呢?(我还试图在the protocols.py from pyobjus中添加“UIImagePickerControllerDelegate”。这并没有解决问题)

  3. 如果协议有效,使用“ImagePickerControllerdFinish(self,image)”方法访问映像是否正确

Tags: fromimportself应用程序ui协议defprotocol