我开发了一个Beeware应用程序,我想找到一种方法,在我的Android手机上显示手机存储中的.png张图片.我知道Beeware中的Toga图形用户界面既不支持ImageView,也不支持android上的WebView,而且我找不到任何与Beeware兼容的third party module.这方面有什么解决办法吗?我将在下面附上在Windows中工作但在Android中不起作用的相关代码,以及导致崩溃的异常

UPDATE:我在下面的答案后面更正了mhsmith,它工作得很好!非常感谢.我更新了下面的代码以反映正确的脚本

import toga
from toga import App, Box, MainWindow
from toga import ImageView, Image
from toga.style import Pack
from toga.style.pack import COLUMN, ROW, BOTTOM, TOP, LEFT

with open('/storage/emulated/0/documents/my_picture.bmp',"rb") as f:
    image_data = f.read()
image_bytes = bytes(image_data)


class HelloWorld(toga.App):
    def startup(self):
        main_box = toga.Box(style=Pack(direction=COLUMN))

        self.myImage = toga.images.Image(data=image_bytes)
        self.img=toga.ImageView(image=self.myImage)
        main_box.add(self.img)

        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

def main():
    return HelloWorld() 

推荐答案

如图here所示,Android上的ImageView和WebView都有一个白点,这意味着它们是受支持的,尽管当前版本可能存在一些错误.

在本例中,错误是由image参数的类型引起的.Toga的future 版本将在这里接受字符串,但当前稳定版本需要一个Image对象.

Android相关问答推荐

房间DB:UPSERT返回什么?

try 用Jetpack Compose理解视图模型和导航

安卓Azure通讯聊天UI库导入?

Dispatchers中的Kotlin协同程序.Main没有';t块主螺纹

有没有办法迭代类型安全的项目访问器?

Android 访问任意公共目录

在Android RoomDB中使用Kotlin Flow和删除数据时如何解决错误?

从 Jetpack Compose 中的 IconButton 中删除黑色色调

Android Studio电鳗:javaHome好像无效

每次在 Jetpack Compose 中调用导航

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

自定义 Compose Arrangement 以在 LazyRow/LazyColumn 的开头和结尾添加额外的间距

LazyColumn 单选中的状态提升. Jetpack compose

Android:appcompat 和 material 如何从默认创建 appcompat 和 material 视图?

可组合的可见性不随状态变化而变化

我的 React Native 在 11 月 4 日之前运行良好,但现在在运行 yarn android 时抛出异常

缺少类 com.google.android.datatransport.runtime.ForcedSender

在 Kotlin 中打开新片段时如何对当前片段应用更改?

Jetpack Compose Material3 - switch 标签

Android全屏AlertDialog