适合任务栏(Win)和菜单栏(mac)的跨平台Python GUI?
我刚开始学习Python编程,对跨平台的图形用户界面(GUI)构建完全是个新手(之前只用过Visual Basic和Java做过一些GUI)。我写了一些Python代码,从一个网站上抓取数据,现在我想做一个图形界面,这个界面要能在Mac OS X的菜单栏和Windows的任务栏(也就是系统托盘)里显示。
对我来说,关于跨平台Python GUI的最有用的页面是这个(尽管它的名字提到的是Windows GUI)。还有一些StackOverflow上的问题也很有帮助(特别是这个,以及这个的被接受答案,讨论了如何把GUI和命令行代码分开)。我觉得我会选择wxPython或者QT,因为我希望这个GUI看起来尽可能像本地应用。
不过,正如我所说,这个相对简单的GUI主要会在任务栏/菜单栏里显示。
这会影响我的选择吗?
2 个回答
10
这里有一个关于PyQt的例子。这个在我的MacOS X上能正常工作;我没有在其他平台上试过。需要注意的是,QSystemTrayIcon
这个类如果没有图标的话会报错——我从维基共享资源上下载了一个RSS图标作为我的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
可以看看这个 相关的StackOverflow回答,里面讲了如何在wxPython中实现Windows系统托盘或Mac OS X菜单栏的功能。