首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3+Kivy+Plyer推送通知图标问题

Python3+Kivy+Plyer推送通知图标问题
EN

Stack Overflow用户
提问于 2021-09-15 11:40:06
回答 1查看 494关注 0票数 2

我在使用android的一个简单的通知测试应用时遇到了一个奇怪的错误。

错误:

代码语言:javascript
复制
python  :  AttributeError: type object 'notification.org.notificator.R$drawable' has no attribute 'icon'

python文件:

代码语言:javascript
复制
import kivy
from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivy.lang import Builder
from plyer import notification
from kivy.uix.screenmanager import ScreenManager


class NotificationScreen(MDScreen):
    def do_notify(self, mode='fancy'):
        title = self.ids.notification_title.text
        message = self.ids.notification_text.text
        ticker = self.ids.ticker_text.text
        app_ico = 'Images/icon.png'

        notification.notify(app_icon=app_ico, title=title, message=message, ticker=ticker, timeout=10)
        #notification.notify(app_icon='Images/icon.ico', title=title, message=message, ticker=ticker, timeout=10)
        #notification.notify(title=title, message=message, ticker=ticker, timeout=10)


class ScreenManagement(ScreenManager):
    pass


view = Builder.load_file('main.kv')


class NotificationDemoApp(MDApp):
    def build(self):
        return view


if __name__ == '__main__':
    NotificationDemoApp().run()

KV文件:

代码语言:javascript
复制
ScreenManagement:
    id: scrm
    NotificationScreen:
        scrm: scrm

<NotificationScreen>:
    notification_title: notification_title
    notification_text: notification_text
    ticker_text: ticker_text
    MDBoxLayout:
        orientation: 'vertical'
        md_bg_color: 0, 0, 0, 1
        MDBoxLayout:
            orientation: 'horizontal'
            size_hint: 1, None
            md_bg_color: 1, 1, 1, 1
            TextInput:
                id: notification_title
                text: 'Put title here'
                size_hint: 1, None
            TextInput:
                id: notification_text
                text: 'Put message here'
                size_hint: 1, None
            TextInput:
                id: ticker_text
                text: 'New notification'
                size_hint: 1, None
        Button:
            text: 'Toast Notification'
            size_hint: 1, None
            on_release: root.do_notify(mode='toast')
        Button:
            text: 'Simple Notification'
            size_hint: 1, None
            on_release: root.do_notify(mode='normal')
        Button:
            text: 'Fancy Notification'
            size_hint: 1, None
            on_release: root.do_notify(mode='fancy')

buildozer的基本未注释行:

代码语言:javascript
复制
[app]
title = Notification Example
package.name = notificator
package.domain = notification.org
source.dir = .
requirements = python3,kivy==2.0.0rc4,requests,kivymd,pillow,urllib3,charset_normalizer,idna,plyer
icon.filename = %(source.dir)s/icon.png

我已经尝试将图标更改为.ico (两者都在图像目录中),但仍然存在相同的问题。我还尝试从notify()函数中删除app_icon参数,但仍然存在相同的问题。我也试着把图标放到根目录中,同样的问题。

求求你,我一直在寻找答案,但在网上没有找到任何有用的东西。有什么建议或解决方案吗?Thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 22:01:47

我遇到了同样的问题,并找到了问题和解决方法,但没有找到解决方案:

问题存在于文件plyer/platforms/android/notification.py中创建的Drawable Object中。如果您使用print(dir(Drawable)),您将发现没有属性icon (如错误消息所述)。我不知道为什么没有图标属性,但你会发现有一个预启动属性(这也是一个.png文件,因此可以替换)。

通过将notification.py中的第100行从app_icon = Drawable.icon更改为app_icon = Drawable.presplash,我可以避开这个错误,我的应用程序运行得很好。不过,您需要更改位于ProjectName/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/projectname/plyer/platforms/android的正确文件中的行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69192439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档