5

我正在用 python 开发一个应用程序,它将在 Windows MacOsX 和 Linux 中使用,现在我正在 Mac OSX 栏中开发系统(状态图标)图标(以及单击时的菜单)。我可以在 windows、mac 和 linux 中使用 PyGTK,并使用相同的代码在状态栏 (macosx)、系统托盘(windows) 或 linux 中显示状态图标吗?

提前致谢。这是代码:

import gtk


class SystrayIconApp:
    def __init__(self):
        self.tray = gtk.StatusIcon()
        self.tray.set_from_stock(gtk.STOCK_ABOUT) 
        self.tray.connect('popup-menu', self.on_right_click)
        self.tray.set_tooltip(('Sample tray app'))


        def on_right_click(self, icon, event_button, event_time):
          self.make_menu(event_button, event_time)

        def make_menu(self, event_button, event_time):
          menu = gtk.Menu()

          # show about dialog
          about = gtk.MenuItem("About")
          about.show()
          menu.append(about)
          about.connect('activate', self.show_about_dialog)

          # add quit item
          quit = gtk.MenuItem("Quit")
          quit.show()
          menu.append(quit)
          quit.connect('activate', gtk.main_quit)

          menu.popup(None, None, gtk.status_icon_position_menu,
                   event_button, event_time, self.tray)

    def  show_about_dialog(self, widget):
        about_dialog = gtk.AboutDialog()
        about_dialog.set_destroy_with_parent (True)
        about_dialog.set_icon_name ("SystrayIcon")
        about_dialog.set_name('SystrayIcon')
        about_dialog.set_version('0.1')
        about_dialog.set_copyright("(C) 2010 João Pinto")
        about_dialog.set_comments(("Program to demonstrate a system tray icon"))
        about_dialog.set_authors(['João Pinto <joao.pinto@getdeb.net>'])
        about_dialog.run()
        about_dialog.destroy()

if __name__ == "__main__":
    SystrayIconApp()
    gtk.main()

这是 MAC OS X 中的托盘(来自 gtk+ 的明星):

这是 MAC OS X 中的系统托盘

这是 WINDOWS 中的托盘(来自 gtk+ 的星星):

这是 WINDOWS 中的托盘

在 windows 上没问题,单击图标时可以看到菜单,但在 Mac OX 中,显示 icos 但不显示菜单。

代码有什么问题?

4

1 回答 1

-3

简短的回答:是的!

Qt 管理所有兼容操作系统中的状态图标集成。

你只需要使用这个QSystemTrayIcon类就可以做到这一点。

QSystemTrayIcon 类为系统托盘中的应用程序提供图标。现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行的应用程序可以在其中显示图标和短消息。

有关Qt 文档的更多信息。

于 2013-04-29T18:34:11.250 回答