PySide 1.0.3 - to działa

Pierwsze wersje PySide nie pozwalały na bezbolesne uruchamianie aplikacji napisanych wcześniej z wykorzystaniem PyQt4. Projekt nadal się rozwijał i na chwilę obecną mamy dostępną wersję 1.0.3. PySide jest biblioteką udostępniającą w Pythonie API biblioteki Qt4. W odróżnieniu od PyQt4 udostępniana jest na bardziej liberalnej dla zamkniętego oprogramowania licencji LGPL

By sprawdzić jak obecnie wygląda zgodność obu bibliotek postanowiłem podmienić PyQt4 na PySide w mojej dość prostej aplikacji Zbrojownia Albionu.

Na początek zmieniłem importy na:
from PySide import QtCore, QtGui
Zmiany wymagało także wywołanie konstruktora klasy rodzica w klasie aplikacji z:
class MyForm(QtGui.QMainWindow):
	def __init__(self, parent=None):
		QtGui.QWidget.__init__(self, parent)
Na:
class MyForm(QtGui.QMainWindow):
	def __init__(self, parent=None):
		QtGui.QMainWindow.__init__(self, parent)
Usunąć musiałem także setMargin ze względu na brak tej metody dla QGridLayout:
self.ui.centralwidget.layout().setMargin(0)
To pozwoliło uruchomić aplikację. W czasie jej użytkowania PySide raportowało dodatkowe ostrzeżenia o niekompatybilnym użyciu metod, np:
TypeError: 'PySide.QtGui.QCheckBox.setCheckState' called with wrong argument types:
  PySide.QtGui.QCheckBox.setCheckState(int)
Supported signatures:
  PySide.QtGui.QCheckBox.setCheckState(PySide.QtCore.Qt.CheckState)

Oczywiście bardziej złożone aplikacje wykorzystujące np. wątki (QThread), czy inne podsystemy Qt4 mogą natrafić na większą ilość problemów przy przechodzeniu z PyQt4 na PySide. Biblioteka ta jednak praktycznie już jest, lub zaraz będzie odpowiednikiem PyQt4. Pytania można jednak stawiać co do zaangażowania Nokii w przyszłości. Kolejna kwestia to dostęp do dodatkowych widżetów, efektywność ich tworzenia na podstawie widżetów Qt4 (SIP dla PyQt4 jest już dość dobrze znane). Źle to obecnie nie wygląda.

RkBlog

PyQt, 4 June 2011

Comment article
Comment article RkBlog main page Search RSS Contact