Кроссплатформенный графический интерфейс Python подходит для функциональности панели задач (Win) и menubar (mac)? - PullRequest
6 голосов
/ 23 июня 2010

Я довольно новичок в программировании на Python и совершенно не знаком с кроссплатформенным построением графического интерфейса (только предыдущий опыт работы с GUI - через Visual Basic и Java). Я написал некоторый код Python для скрининга данных с веб-сайта, и теперь я хочу создать графический интерфейс , который будет находиться в меню Mac OS X и на панели задач Windows (т. Е. В системном трее) .

Самой полезной общей страницей для кросс-платформенных графических интерфейсов Python для меня была эта (несмотря на то, что она указала название окна Window GUI). Также были полезны некоторые вопросы о стеке потока (особенно этот и принятый ответ этого о разделении GUI и кода Cli). Я думаю, что я выберу wxPython или QT , потому что я хочу, чтобы графический интерфейс выглядел как можно более родным.

Однако, как я уже сказал, довольно простой графический интерфейс будет в основном жить в панели задач / меню. Должно ли это повлиять на мое решение?

Ответы [ 2 ]

10 голосов
/ 29 июня 2010

Вот пример для PyQt. Это работает для меня на MacOS X; Я не пробовал это на других платформах. Обратите внимание, что класс QSystemTrayIcon будет вызывать исключения, если у него нет значка - я взял svg RSS-канала из вики-ресурса для моего icon.svg (но вы можете * PNG QIcon напрямую и не возиться с 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 голосов
/ 23 июня 2010

См. Этот связанный ответ SO о том, как выполнить функциональность панели задач Windows / панели меню OS X в wxPython.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...