跨平台的Python图形用户界面,适用于任务栏(Win)和菜单栏(mac)功能?

7
我对Python编程比较新,对跨平台GUI构建完全不了解(之前的GUI经验仅限于Visual Basic和Java)。我编写了一些Python代码来从网站上抓取数据,现在我想构建一个GUI,它将驻留在Mac OS X菜单栏和Windows任务栏中(即系统托盘)
对我最有用的跨平台Python GUI通用页面是这个(尽管它的名称表明是Window GUI)。一些stackoverflow问题也很有用(特别是这个,以及关于拆分GUI和cli代码的这个的接受答案)。 我想我会选择wxPythonQT,因为我希望GUI看起来尽可能本地化。
然而,正如我所说,相当简单的GUI主要将位于任务栏/菜单栏中。这是否会影响我的决定?
2个回答

10

这是一个PyQt的示例。在MacOS X上,我尝试过并且有效,但我没有在其他平台上尝试过。请注意,如果QSystemTrayIcon类没有图标,它将引发异常- 我从维基共享资源中获取了RSS feed svg作为我的icon.svg(但您也可以直接给QIcon一个PNG而不用麻烦自己使用QtSvg)。

import PyQt4
from PyQt4 import QtCore, QtGui, QtSvg

app = QtGui.QApplication([])

i = QtGui.QSystemTrayIcon()

m = QtGui.QMenu()
def quitCB():
 QtGui.QApplication.quit()
def aboutToShowCB():
 print 'about to show'
m.addAction('Quit', quitCB)
QtCore.QObject.connect(m, QtCore.SIGNAL('aboutToShow()'), aboutToShowCB)
i.setContextMenu(m)

svg = QtSvg.QSvgRenderer('icon.svg')
if not svg.isValid():
 raise RuntimeError('bad SVG')
pm = QtGui.QPixmap(16, 16)
painter = QtGui.QPainter(pm)
svg.render(painter)
icon = QtGui.QIcon(pm)
i.setIcon(icon)
i.show()

app.exec_()

del painter, pm, svg # avoid the paint device getting
del i, icon          # deleted before the painter
del app

2

请参见相关的SO答案,了解如何在wxPython中实现Windows系统托盘/OS X菜单栏功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接