Я пишу апплет для Волнистого попугайчика 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 помогают, будет цениться.Заранее спасибо.
Я определяю опечатку!
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. Не делайте! Вы заблокируете основной поток панели.