首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动多个AppIndicator实例

启动多个AppIndicator实例
EN

Stack Overflow用户
提问于 2017-08-29 01:36:13
回答 1查看 226关注 0票数 0

免责声明:我对Python和Ubuntu相当陌生。完整代码在https://github.com/bluppfisk/coinprice-indicator/tree/multipletickers

我正在调整一个密码硬币价格指示器,它使用libapp指示器显示在Ubuntu中的任务栏中,以便能够运行多个自身实例。

但是,系统似乎无法区分不同的通知项,并试图覆盖它们,而不是添加其他通知项。错误:

libappindicator警告**:无法在路径'/org/ayatana/NotificationItem/Coin_Price_indicator':上注册对象,一个对象已经导出到/org/ayatana/NotificationItem/Coin_Price_indicator的接口org.kde.StatusNotifierItem

我认为创建一个新的指示器类实例(它启动NotificationItem)应该自动完成这个任务。此外,我还对它们进行了多线程处理,并在启动线程之后启动了主Gtk线程:

代码语言:javascript
复制
for cp_instance in cp_instances:
    ++counter
    settings = cp_instance['exchange'] + ':' + cp_instance['asset_pair'] + ':' + str(cp_instance['refresh'])
    indicator = Indicator(config, 'indicator' + str(counter), counter, config, settings)
    indicators.append(indicator)

for indicator in indicators:
    indicator.start()
    indicator.join()

Gtk.main()

Indicator.py

代码语言:javascript
复制
class Indicator(object):
    def __init__(self, config, settings=None):
        self.config = config

        self.settings = Settings(settings)
        self.refresh_frequency = self.settings.refresh()
        self.active_exchange = self.settings.exchange()

        icon = self.config['project_root'] + '/resources/icon_32px.png'
        self.indicator = AppIndicator.Indicator.new(self.config['app']['name'], icon,
                                                    AppIndicator.IndicatorCategory.APPLICATION_STATUS)
        self.indicator.set_status(AppIndicator.IndicatorStatus.ACTIVE)
        self.indicator.set_label("syncing", "$888.88")

        self.exchanges = None
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-30 07:29:40

问题在于AppIndicator.Indicator.new()。运行多个实例总是会收到相同的名称,因此占用彼此的空间。更改每个实例运行的第一个参数是解决方案。

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

https://stackoverflow.com/questions/45929464

复制
相关文章

相似问题

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