2010-06-23 7 views
6

Jestem całkiem nowy w programowaniu w języku Python i zupełnie nowym w wieloplatformowym budowaniu GUI (tylko wcześniejsze doświadczenie w GUI jest realizowane za pomocą Visual Basic i Java). Pisałem jakiś kod Pythona do danych ekranu zeskrobanie z witryny, a teraz chcę zbudować GUI które będą przebywać w Mac OS X paska menu, a na pasku zadań tło Windows (czyli w zasobniku systemowym).Wieloplatformowe GUI Pythona odpowiednie dla funkcji paska zadań (Win) i menubar (mac)?

Najbardziej użyteczną stroną ogólną w graficznych interfejsach graficznych w języku Python była this one (pomimo nazwy GUI okna ze wskazaniem nazwy). A niektóre pytania dotyczące stackoverflow również okazały się przydatne (zwłaszcza this one i the accepted answer of this one o dzieleniu GUI i kodu cli). Myślę, że przejdę na wxPython lub QT, ponieważ chcę, aby GUI wyglądał jak natywny.

Jednak, jak już powiedziałem, dość prosty GUI będzie głównie żył na pasku zadań/pasku menu. Czy to wpłynie na moją decyzję?

Odpowiedz

2

Zobacz, jak to zrobić related SO answer w celu uzyskania funkcji paska zadań systemu Windows/paska menu systemu OS X w wxPythonie.

10

Oto przykład PyQt. Działa to dla mnie na MacOS X; Nie próbowałem go na innych platformach. Zauważ, że klasa QSystemTrayIcon zgłosi wyjątki, jeśli nie ma ikony - złapałem RSS feed svg from Wiki commons dla mojego icon.svg (ale możesz dać QIcon PNG bezpośrednio i nie zadzierać z 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