我在使用android的一个简单的通知测试应用时遇到了一个奇怪的错误。
错误:
python : AttributeError: type object 'notification.org.notificator.R$drawable' has no attribute 'icon'python文件:
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文件:
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的基本未注释行:
[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
发布于 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的正确文件中的行。
https://stackoverflow.com/questions/69192439
复制相似问题