Почему мой апплет волнистого попугайчика не отображается в панели волнистого попугайчика?

Я пишу апплет для Волнистого попугайчика Ubuntu в Python. Я написал некоторый код, отлаженный без ошибок, сохранил его и поместил папку с файлами в ~/.local/share/budgie-desktop/plugin каталог, таким образом, я могу добавить его на панели. Я пытался добавить его как апплет, но ничего не произошло. Таким образом, я не уверен, работает ли гладко или нет. Код находится в этой ссылке

https://gist.github.com/cgiannakidis70/db0cf31558e6c20e95716679b831fd8f

#!/usr/bin/env python3

import os
import gi
import gi.repository
gi.require_version('Budgie', '1.0')
from gi.repository import Budgie, GObject, Gtk, Gio

class myapplet(GObject.GObject, Budgie.Plugin):

    __gtype_name__ = "myapplet"

    def __int__(self):

        GObject.GObject.__init__(self)

    def do_get_panel_widged(self, uuid):

        return myappletApplet(uuid)

class myappletApplet(Budgie.Applet):

    def __init__(self, uuid):

        Budgie.Applet.__init__(self)

        self.button = Gtk.ToggleButton.new("A")
        self.button.set_relief(Gtk.ReliefStyle.NONE)
        self.button.set_active(False)
        self.button.set_tooltip_text("Apple Menu")
        self.add(self.button)
        self.button.connect("clicked", self.button_clicked)
        self.show_all()

    def button_clicked(self):

        dialog = menu(self)
        response = dialog.run()

        dialog.destroy()

        #Create Menu
        menu = Gio.Menu()
        menu.append("About This PC", "app.about_this_pc")
        self.set_applet_menu(menu)

        #create an action for the option "About This PC" of the menu
        about_this_pc_action = Gio.SimpleAction.new("about_this_pc", None)
        about_this_pc_action.connect("activate", self.about_this_pc_cb)
        self.add_action(about_this_pc_action)



    def about_this_pc_cb(self, action, parameter):

        print("About This PC")




Gtk.main()

Апплет о кнопке в панели, которая каждый раз я продвигаю его, открывает выпадающее меню с некоторыми опциями, которые могут быть активированы. Как "пользовательский апплет индикатора".

Прямо сейчас я сложен, и я не могу продолжить, код.Any помогают, будет цениться.Заранее спасибо.

1
задан 17 March 2018 в 14:21

1 ответ

Я определяю опечатку!

def do_get_panel_widged(self, uuid):

Это должно быть:

def do_get_panel_widget(self, uuid):

То, что происходит, - то, что версия опечатки просто определяет функцию. Неявно do_get_panel_widget называют, но это - интерфейсная функция, таким образом, апплет никогда не будет появляться.

С корректным именем - Вы теперь переопределяете встроенную интерфейсную функцию и обращаетесь к Вашему новому коду апплета.

Во-вторых, в Вашем примере Вы пропускаете .plugin файл - Вам нужно это, чтобы позволить модулю работать. Сменный файл является этим форматом:

[Plugin]
Loader=python3
Module=test
Name=test
Description=test description
Authors=your name
Copyright=© 2018 email address
Website=https://your-website.com
Icon=we-prefer-symbolic-icons-symbolic

В-третьих:

Не имейте Gtk.main () в конце Вас основным модулем - который просто путает основанный на горохе плагин - удаляют его

В-четвертых:

Используйте Gtk. EventBox () для включения апплета - это - как настольные волнистым попугайчиком 10,4 плагинов должны теперь быть записаны - пример кода ниже

    self.button = Gtk.ToggleButton.new()
    self.button.set_relief(Gtk.ReliefStyle.NONE)
    self.button.set_active(False)
    self.button.set_tooltip_text("Apple Menu")
    box = Gtk.EventBox()
    box.add(self.button)
    self.add(box)
    self.button.connect("clicked", self.button_clicked)
    box.show_all()
    self.show_all()

def button_clicked(self, *args):

Пятый:

Заметьте, что button_clicked событие пропускает аргумент - нажатые события в GTK передают саму кнопку обработчику сигналов

Наконец - который я не исправил для Вас - Ваша нажатая функция имеет неинициализированное диалоговое окно - и Вы, кажется, хотите отобразить Диалоговое окно Gtk. Не делайте! Вы заблокируете основной поток панели.

2
ответ дан 7 December 2019 в 13:26

Другие вопросы по тегам:

Похожие вопросы: