为什么我的 budgie 小程序没有显示在 budgie 面板中?

为什么我的 budgie 小程序没有显示在 budgie 面板中?

我正在用 Python 为 Ubuntu Budgie 编写一个小程序。我写了一些代码,调试时没有错误,保存了它并将包含文件的文件夹放在 ~/.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()

该小程序是关于面板上的一个按钮,每次我按下它时都会打开一个下拉菜单,其中有一些可以激活的选项,就像“用户指示器小程序”一样。

现在我被堆满了,无法继续写代码。任何帮助我都会很感激。提前谢谢。

答案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() - 这只会混淆基于 Peas 的插件 - 删除它

第四:

使用 Gtk.EventBox() 添加您的小程序 - 这是 budgie-desktop 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 对话框。不要!您将阻止面板的主线程。

相关内容