J'écris un applet pour Ubuntu Budgie en python.J'ai écrit du code, débogué sans erreur, je l'ai sauvegardé et mis le dossier avec les fichiers dans le répertoire ~/.local/share/budgie-desktop/plugin afin que je puisse l'ajouter J'ai essayé de l'ajouter en tant qu'applet, mais rien ne s'est passé. Je ne suis donc pas sûr que tout se passe bien ou pas. Le code est dans ce lien
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()
L'applet concerne un bouton dans le panneau qui, chaque fois que je l'y appuie, ouvre un menu déroulant avec certaines options qui peuvent être activées.Comme le "applet-indicateur-utilisateur".
En ce moment je suis empilé et je ne peux pas continuer le code. Toute aide sera appréciée. Merci d'avance.
Je repère une faute de frappe!
def do_get_panel_widged(self, uuid):
CA devrait etre:
def do_get_panel_widget(self, uuid):
Ce qui se passe, c'est que la version de frappe ne fait que définir une fonction. Do_get_panel_widget est implicitement appelé, mais il s'agit d'une fonction de stub, de sorte que l'applet n'apparaîtra jamais.
Avec le nom correct, vous remplacez maintenant la fonction stub intégrée et appelez votre nouveau code d'applet.
Deuxièmement, dans votre exemple, il manque un fichier .plugin - vous en avez besoin pour permettre au module de s'exécuter. Le fichier plugin est ce format:
[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
Troisièmement:
Ne pas avoir Gtk.main () à la fin de votre module principal - cela confond simplement un plugin basé sur Peas - supprimez-le
Quatrième:
Utilisez un Gtk.EventBox () pour ajouter votre applet - c’est ainsi que les plugins budgie-desktop 10.4 doivent maintenant être écrits - exemple de code ci-dessous
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):
Cinquième:
Remarquez qu'il manque un argument à l'événement button_clicked - les événements cliqués dans GTK transmettent le bouton lui-même au gestionnaire de signaux
Enfin - ce que je n’ai pas corrigé pour vous - votre fonction cliquée contient une boîte de dialogue non initialisée - et vous semblez vouloir afficher une boîte de dialogue Gtk. Non! Vous allez bloquer le fil principal du panneau.