接上一篇
toga:关于toga,是跨平台的以python为开发工具的native UI集成工具包。其优势在于,跨平台的开发的界面,是native的UI。ios,mac,windows等等,最后打包发布后,从UI看,和原生系统下开发出的App没区别。
toga的做法是对现有的各平台的UI组件进行了集成和封装。由于,toga仍然处在开发中,所发布的UI组件框架仅仅是对常用的组件进行了集成,而当需要用到一些特别的组件时,必须自己来扩展。譬如,本项目需要用到ios系统中的相册功能,objective-c中是用imagePickerController来调取的。这在toga中是无法做跨平台集成的。因此,我们要使用它,必须自己来扩展。
objective-c的相册调用的方法,是通过delegate作为回调来最终获取图片的,因此,我们如果想在toga中用python来使用,方法一样,同样需要指定和集成delegate才能获取图片。具体细节很多。这里略过。下面是扩展的实际代码。
class TogaImagePickerView(UIImagePickerController):
@property
def window(self):
return self._window
def _init_(self,window):
self._window=window
@objc_method
def imagePickerController_didFinishPickingMediaWithInfo_(self, sender, info) -> None:
global im,data,buf,img
global iv,main_box,main_window,button2,button1,AlbumImage
#print("return from album")
#pass
#if self.interface.on_webview_load:
# self.interface.on_webview_load(self.interface)
self.dismissViewControllerAnimated(False,completion=None)
#global AlbumImage
AlbumImage=info[UIImagePickerControllerOriginalImage]
size = AlbumImage.size
scale = AlbumImage.scale
imagewidth = math.floor