PySide
Wprowadzenie
Biblioteka PySide jest wrapperem Pythona dla wieloplatformowego zestawu narzędzi graficznego interfejsu użytkownika (GUI) Qt. FreeCAD używa Qt jako swojego głównego zestawu narzędzi do GUI. Qt samo w sobie jest więcej niż tylko zestawem narzędzi do GUI, jest zbiorem bibliotek C++ dla wielu różnych celów. Na przykład można tworzyć sieci z komponentami biblioteki Qt, wszystko to dostępne w Pythonie poprzez PySide. Każdy interfejs graficzny, który można utworzyć w C++, można również tworzyć i modyfikować w Pythonie. Zaletą używania Pythona jest to, że interfejsy Qt można rozwijać i testować na żywo, ponieważ nie musimy kompilować plików źródłowych.
Zalecany sposób importu PySide (dowolnej wersji) we FreeCAD to:
from PySide import QtCore, QtGui, QtWidgets
Wersje Qt oraz PySide
- Wersja 1.0 Qt została wydana w połowie lat 90.
- Wersja 4.0 Qt została wydana w 2005 r. a seria 4.x została oficjalnie wycofana w 2015 r.
- Wrapper Python dla Qt4.x nazywa się PySide
- Wersja 5.0 Qt została wydana w 2012 r. a seria 5.x została oficjalnie wycofana w 2020 r.
- Wrapper Pythona dla Qt5.x nazywa się PySide2
- Wersja 6.0 Qt została wydana w 2020 r., jest to obecna seria wydań
- Wrapper Pythona dla Qt6.x nazywa się PySide6
Przykłady stworzone z PySide. Po lewej: proste okno dialogowe. Po prawej: bardziej złożone okno dialogowe z wykresami.
FreeCAD i PySide
Oryginalna idea stojąca za FreeCAD polegała na połączeniu Cas.CADE (jądro geometryczne), Qt (zestaw narzędzi GUI) i Pythona w celu stworzenia darmowego parametrycznego programu CAD 3D z wbudowanym silnikiem skryptowym. Było to na początku lat 2000., czyli przed pojawieniem się PySide, dlatego przez pierwszą dekadę istnienia FreeCAD używano innego wrappera – PyQt. PySide powstało, aby rozwiązać problemy licencyjne związane z PyQt, a przejście FreeCAD na PySide nastąpiło w 2013 roku (commit 1dc122dc9a).
Jeśli chciałbyś wiedzieć z jakiej wersji Qt korzysta twoja instalacja FreeCAD, okno Informacje o FreeCAD zawiera listę wersji z uwzględnieniem Qt.
Aby uzyskać więcej informacji, zobacz strony:
Podczas instalacji programu FreeCAD zostanie zainstalowane zarówno Qt, jak i odpowiednie PySide jako część pakietu. Jeśli samodzielnie kompilujesz program, musisz upewnić się, że pasujące do siebie wersje obu bibliotek są zainstalowane, aby FreeCAD działał poprawnie. Oczywiście PySide będzie działać tylko wtedy, gdy obecne jest Qt.
Kompatybilność wielu wersji
Główna różnica między bibliotekami PySide a późniejszymi PySide2 i PySide6 polega na przestrzeniach nazw. PySide (Qt4) udostępnia główne przestrzenie nazw QtGui i QtCore, natomiast PySide2 (Qt5) i PySide6 (Qt6) wprowadziły dodatkową przestrzeń nazw QtWidgets, w której obecnie znajdują się wszystkie widgety; wcześniej były one umieszczone w przestrzeni nazw QtGui.
Podejście FreeCAD do obsługi różnych wersji Qt/PySide polega na nazywaniu ich wszystkich PySide, co tak naprawdę należy rozumieć jako PySideX. Nie ma znaczenia, która wersja Qt/PySide jest zainstalowana, wszystkie są importowane jako PySide.
Shim obsługuje różnice między wersjami. Ten shim PySide jest zlokalizowany w ścieżce Ext/ instalacji programu FreeCAD skompilowanego dla Qt5/Qt6.
/usr/share/freecad/Ext/PySide
Moduł ten po prostu importuje niezbędne klasy z PySide2/6 i umieszcza je w przestrzeni nazw PySide. To podejście zostało wybrane ze względu na jego możliwość zapewnienia wstecznej kompatybilności z perspektywy Qt4.
PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtWidgets -> PySide.QtWidgets
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools
Z tego powodu, klasy PySide2.QtWidgets są również umieszczone w przestrzeni nazw PySide.QtGui.
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox
Ale obecnie zalecanym sposobem jest użycie nowoczesnej przestrzeni nazw.
from PySide import QtCore, QtGui, QtWidgets
my_check_box = QtWidgets.QCheckBox()
Przykłady użycia PySide
- Podstawowe przykłady PySide, hello world, ogłoszenia, wprowadzanie tekstu, wprowadzanie liczby.
- Średniozaawansowane przykłady PySide, rozmiar okna, ukrywanie widżetów, okna wyskakujące, pozycja kursora, akcje myszki.
- Zaawansowane przykłady PySide, wiele widżetów.
Przykłady PySide są podzielone na 3 części, różniące się stopniem zaawansowania w zakresie PySide, Pythona i wewnętrznych mechanizmów FreeCAD. Pierwsza strona zawiera przegląd PySide; druga i trzecia strona to w większości przykłady kodu na różnych poziomach.
Oczekuje się, że te przykłady będą pomocne na początek, a następnie użytkownik może korzystać z innych zasobów dostępnych online lub z oficjalnej dokumentacji.
Dokumentacja
Istnieją pewne różnice w obsłudze widżetów między różnymi wersjami. Programiści powinni być świadomi tych niezgodności i sprawdzić oficjalną dokumentację, jeśli coś nie działa zgodnie z oczekiwaniami na danej platformie. Chociaż zdarza się to rzadko, czasami może być konieczne tworzenie wersjonowanych wywołań poprzez instrukcje warunkowe if.
Dokumentacja PySide odnosi się do klas w stylu Pythona; jednak ponieważ Qt jest pierwotnie biblioteką C++, te same informacje powinny być dostępne w odpowiedniej dokumentacji C++.
- Moduły Qt dostępne z PySide2/PySide6 (Qt5/Qt6).
- Wszystkie klasy Qt według modułu w Qt5 dla C++.
- Moduły Qt dostępne z PySide (Qt4).
- Tworzenie skryptów FreeCAD: Python, Wprowadzenie do środowiska Python, Poradnik: Tworzenie skryptów Python, Podstawy tworzenia skryptów FreeCAD
- Moduły: Moduły wbudowane, Jednostki miar, Ilość
- Środowiska pracy: Tworzenie Środowiska pracy, Polecenia Gui, Polecenia, Instalacja większej liczby Środowisk pracy
- Siatki i elementy: Skrytpy w Środowisku Siatek, v, Konwerska Mesh na Part, PythonOCC
- Obiekty parametryczne: Obiekty tworzone skryptami, Obsługa obrazu (Ikonka niestandardowa w widoku drzewa)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Interfejs graficzny: Stworzenie interfejsu, Kompletne stworzenie interfejsu w środowisku Python (1, 2, 3, 4, 5), PySide, PySide examples początkujący, średniozaawansowany, zaawansowany
- Makrodefinicje: Makrodefinicje, Instalacja makrodefinicji
- Osadzanie programu: Osadzanie programu FreeCAD, Osadzanie GUI FreeCAD
- Pozostałe: Wyrażenia, Wycinki kodu, Funkcja kreślenia linii, Biblioteka matematyczna FreeCAD dla wektorów (deprecated)
- Węzły użytkowników: Centrum użytkownika, Centrum Power użytkowników, Centrum programisty

