Manual:Creating interface tools/pl: Difference between revisions
(Created page with "Python oferuje podstawowe narzędzie do wprowadzania tekstu przez użytkownika na ekranie:") |
(Created page with "{{Docnav/pl |Tworzenie obiektów parametrycznych |Społeczność |Podręcznik:Słowo wstępne |IconC=Crystal Clear manual.png }}") |
||
(21 intermediate revisions by the same user not shown) | |||
Line 14: | Line 14: | ||
W wielu sytuacjach nie jest bardzo przyjazne dla użytkownika konstruowanie obiektu z zerowymi wartościami, tak jak zrobiliśmy to z prostokątem w poprzednim rozdziale, a następnie prośba o wypełnienie wartości Wysokości i Szerokości w panelu Właściwości. To działa dla bardzo niewielkiej liczby obiektów, ale stanie się bardzo uciążliwe, jeśli trzeba będzie tworzyć wiele prostokątów. Lepszym sposobem byłoby już podanie Wysokości i Szerokości podczas tworzenia prostokąta. |
W wielu sytuacjach nie jest bardzo przyjazne dla użytkownika konstruowanie obiektu z zerowymi wartościami, tak jak zrobiliśmy to z prostokątem w poprzednim rozdziale, a następnie prośba o wypełnienie wartości Wysokości i Szerokości w panelu Właściwości. To działa dla bardzo niewielkiej liczby obiektów, ale stanie się bardzo uciążliwe, jeśli trzeba będzie tworzyć wiele prostokątów. Lepszym sposobem byłoby już podanie Wysokości i Szerokości podczas tworzenia prostokąta. |
||
Python oferuje podstawowe narzędzie do wprowadzania tekstu |
Python oferuje podstawowe narzędzie do wprowadzania tekstu: |
||
text = raw_input("Height of the rectangle?") |
text = raw_input("Height of the rectangle?") |
||
print("The entered height is ",text) |
print("The entered height is ",text) |
||
Wymaga to jednak aktywnej konsoli Python, a kiedy uruchamiamy nasz kod z makrodefinicji, nie zawsze mamy pewność, że konsola Python będzie aktywna. |
|||
However, this requires a running Python console, and when running our code from a macro, we are not always sure that the Python console will be turned on on the user's machine. |
|||
Interfejs graficzny użytkownika ''(GUI)'', czyli wszystkie elementy FreeCAD wyświetlane na ekranie ''(menu, paski narzędzi, widok 3D, itp.)'', jest właśnie dla tego przeznaczony: interakcji z użytkownikiem. Interfejs FreeCAD jest zbudowany za pomocą Qt, bardzo popularnego otwarto źródłowego zestawu narzędzi GUI, który oferuje szeroki zakres narzędzi, takich jak okna dialogowe, przyciski, etykiety, pola do wprowadzania tekstu czy menu rozwijane. Wszystkie te elementy są ogólnie nazywane "widgetami". |
|||
The [https://en.wikipedia.org/wiki/Graphical_user_interface Graphical User Interface], or GUI, that is, all the part of FreeCAD that is displayed on your screen (the menu, toolbars, 3D view, etc), is all there for that purpose: interact with the user. FreeCAD's interface is built with [https://en.wikipedia.org/wiki/Qt_(software) Qt], a very common open source GUI toolkit that offers a wide range of tools such as dialog boxes, buttons, labels, text input boxes or pull-down menus. These are all generically called "widgets". |
|||
Narzędzia Qt są bardzo łatwe w użyciu z poziomu środowiska Python, dzięki modułowi Python o nazwie Pyside ''(istnieje kilka innych modułów Pythona do komunikacji z Qt z poziomu Pythona)''. Ten moduł pozwala tworzyć i współdziałać z widgetami, odczytywać działania użytkownika ''(co zostało wpisane w pola tekstowe)'' lub wykonywać czynności w momencie naciśnięcia przycisku, na przykład. |
|||
The Qt tools are very easy to use from Python, thanks to a Python module called [https://en.wikipedia.org/wiki/PySide Pyside] (there are several other Python modules to communicate with Qt from Python too). This module allows you to create and interact with widgets, read what the user did with them (what was filled in text boxes) or do things when, for example, a button was pressed. |
|||
Qt |
Qt udostępnia również inne interesujące narzędzie o nazwie [http://doc.qt.io/qt-4.8/designer-manual.html Qt Designer], które jest obecnie wbudowane w większą aplikację o nazwie [https://en.wikipedia.org/wiki/Qt_Creator Qt Creator]. Pozwala ono na graficzne projektowanie okien dialogowych i paneli interfejsu, zamiast konieczności ich ręcznego kodowania. W tym rozdziale użyjemy Qt Creator do zaprojektowania widżetu panelu, którego użyjemy w panelu '''Zadanie''' programu FreeCAD. Będziesz więc musiał pobrać i zainstalować Qt Creator z [https://www.qt.io/ide/ oficjalnej strony QT], jeśli korzystasz z systemu Windows lub Mac ''(w systemie Linux będzie on zwykle dostępny w aplikacji menedżera oprogramowania)''. |
||
W poniższym ćwiczeniu najpierw utworzymy panel za pomocą Qt Creator, który poprosi o podanie wartości długości, szerokości i wysokości, a następnie utworzymy wokół niego klasę Python, która odczyta wartości wprowadzone przez użytkownika z panelu i utworzy pudełko o podanych wymiarach. Ta klasa Python będzie następnie używana przez FreeCAD do wyświetlania i sterowania panelem zadań: |
|||
In the following exercise, we will first create a panel with Qt Creator that asks for length, width and height values, then we will create a Python class around it, that will read the values entered by the user from the panel, and create a box with the given dimensions. This Python class will then be used by FreeCAD to display and control the task panel: |
|||
[[Image:Exercise_python_07.jpg]] |
[[Image:Exercise_python_07.jpg]] |
||
Zacznijmy od stworzenia widżetu. Uruchom Qt Creator, a następnie menu '''File → New File or Project → Files and Classes → Qt → Qt Designer Form → Dialog without buttons'''. Kliknij '''Dalej''', nadaj mu nazwę pliku do zapisania, kliknij '''Dalej''', pozostaw wszystkie pola projektu do wartości domyślnej ''("<none>")'' i '''Utwórz'''. System zadań FreeCAD automatycznie doda przyciski OK / Anuluj, dlatego wybraliśmy tutaj okno dialogowe bez przycisków. |
|||
[[Image:Exercise_python_06.jpg]] |
[[Image:Exercise_python_06.jpg]] |
||
* Znajdź '''Etykietę''' na liście w lewym panelu i przeciągnij ją na obszar roboczy naszego widżetu. Kliknij dwukrotnie ostatnio umieszczoną etykietę i zmień jej tekst na '''Długość'''. |
|||
* Find the '''Label''' in the list in the left panel, and drag it onto the canvas of our widget. Double-click the recent placed Label, and change its text to '''Length'''. |
|||
* Kliknij prawym przyciskiem myszy kanwę widżetu i wybierz '''Rozmieść → Rozmieść w siatce'''. Spowoduje to przekształcenie naszego widżetu w siatkę z obecnie tylko jedną komórką, zajmowaną przez naszą pierwszą etykietę. Możemy teraz dodać kolejne elementy po lewej, prawej, górnej lub dolnej stronie naszej pierwszej etykiety, a siatka rozszerzy się automatycznie. |
|||
* Right-click the widget canvas, and choose '''Lay out → Lay out in a Grid'''. This will turn our widget into a grid with currently only one cell, occupied by ourfirst label. We can now add the next items at the left, right, top or bottom of our first label, and the grid will expand automatically. |
|||
* |
* Dodaj dwie kolejne etykiety poniżej pierwszej i zmień ich tekst na Width i Height: |
||
[[Image:Exercise_python_08.jpg]] |
[[Image:Exercise_python_08.jpg]] |
||
* Umieść teraz 3 widżety „Double Spin Box” obok naszych etykiet „Długość”, „Szerokość” i „Wysokość”. Dla każdego z nich, w dolnym prawym panelu, który pokazuje wszystkie dostępne ustawienia dla wybranego widżetu, zlokalizuj „Suffix” i ustaw ich przyrostek na „mm”. FreeCAD posiada bardziej zaawansowany widżet, który może obsługiwać różne jednostki, ale nie jest on dostępny w Kreatorze Qt domyślnie ''(choć może zostać [[Compile_on_Linux/pl#Wtyczka_Qt_designer|skompilowany]])'', więc na razie skorzystamy z standardowego „Double Spin Box” i dodamy przyrostek „mm”, aby upewnić się, że użytkownik wie, w jakich jednostkach pracują: |
|||
* Now place 3 '''Double Spin Box''' widgets next to our Length, Width and Height labels. For each of them, in the lower right panel, which shows all the available settings for the selected widget, locate '''Suffix''' and set their suffix to '''mm'''. FreeCAD has a more advanced widget, that can handle different units, but that is not available in Qt Creator by default (but can be [[Compile_on_Linux#Qt_designer_plugin|compiled]]), so for now we will use a standard Double Spin Box, and we add the "mm" suffix to make sure the user knows in which units they work: |
|||
[[Image:Exercise_python_09.jpg]] |
[[Image:Exercise_python_09.jpg]] |
||
* |
* Teraz nasz widżet jest gotowy, musimy tylko upewnić się co do jednej ostatniej rzeczy. Ponieważ FreeCAD będzie musiał uzyskać dostęp do tego widżetu i odczytać wartości długości, szerokości i wysokości, musimy nadać tym widżetom odpowiednie nazwy, abyśmy mogli je łatwo odzyskać z poziomu FreeCAD. Kliknij każde z Double Spin Boxes, a następnie w prawym górnym oknie kliknij dwukrotnie ich Object Name i zmień je na coś łatwego do zapamiętania, na przykład: BoxLength, BoxWidth i BoxHeight: |
||
[[Image:Exercise_python_10.jpg]] |
[[Image:Exercise_python_10.jpg]] |
||
* |
* Zapisz plik, możesz teraz zamknąć Qt Creator, reszta zostanie wykonana w Python. |
||
* |
* Otwórz FreeCAD i utwórz nowe makro z menu '''Makrodefinicje → Makrodefinicje ... → Utwórz'''. |
||
* Wklej następujący kod. Upewnij się, że zmieniłeś ścieżkę pliku, aby pasowała do miejsca, w którym zapisałeś plik .ui utworzony w QtCreator: |
|||
* Paste the following code. Make sure you change the file path to match where you saved the .ui file created in QtCreator: |
|||
{{Code|code= |
{{Code|code= |
||
Line 80: | Line 80: | ||
}} |
}} |
||
W powyższym kodzie użyliśmy wygodnej funkcji ''(PySideUic.loadUi)'' z modułu FreeCADGui. Funkcja ta ładuje plik .ui, tworzy z niego widżet Qt i mapuje nazwy, dzięki czemu możemy łatwo uzyskać dostęp do podwidżetu według ich nazw ''(np. self.form.BoxLength)''. |
|||
Funkcja "akceptuj" jest również udogodnieniem oferowanym przez Qt. Gdy w oknie dialogowym znajduje się przycisk "OK" ''(co ma miejsce domyślnie podczas korzystania z panelu zadań FreeCAD)'', każda funkcja o nazwie "akceptuj" zostanie automatycznie wykonana po naciśnięciu przycisku "OK". Podobnie, można również dodać funkcję "odrzuć", która zostanie wykonana po naciśnięciu przycisku "Anuluj". W naszym przypadku pominęliśmy tę funkcję, więc naciśnięcie przycisku "Anuluj" spowoduje domyślne zachowanie ''(nic nie robi i zamyka okno dialogowe)''. |
|||
The "accept" function is also a convenience offered by Qt. When there is an "OK" button in a dialog (which is the case by default when using the FreeCAD Tasks panel), any function named "accept" will automatically be executed when the "OK" button is pressed. Similarly, you can also add a "reject" function which gets executed when the "Cancel" button is pressed. In our case, we omitted that function, so pressing "Cancel" will do the default behaviour (do nothing and close the dialog). |
|||
Jeśli zaimplementujemy którąkolwiek z funkcji akceptacji lub odrzucenia, ich domyślne zachowanie ''(nic nie rób i zamknij)'' nie będzie już występować. Musimy więc sami zamknąć panel zadań. Odbywa się to za pomocą: |
|||
If we implement any of the accept or reject functions, their default behaviour (do nothing and close) will not occur anymore. So we need to close the Task panel ourselves. This is done with: |
|||
{{Code|code= |
{{Code|code= |
||
Line 90: | Line 90: | ||
}} |
}} |
||
Gdy mamy już nasz BoxTaskPanel, który ma 1 - widżet o nazwie "self.form" i 2 - w razie potrzeby funkcje akceptacji i odrzucenia, możemy otworzyć panel zadań za jego pomocą, co odbywa się za pomocą tych dwóch ostatnich wierszy: |
|||
{{Code|code= |
{{Code|code= |
||
Line 97: | Line 97: | ||
}} |
}} |
||
Należy pamiętać, że widżet utworzony przez PySideUic.loadUi nie jest specyficzny dla FreeCAD, jest to standardowy widżet Qt, który może być używany z innymi narzędziami Qt. Moglibyśmy na przykład wyświetlić za jego pomocą osobne okno dialogowe. Wypróbuj to w konsoli Python FreeCAD ''(oczywiście używając poprawnej ścieżki do pliku .ui)'': |
|||
{{Code|code= |
{{Code|code= |
||
Line 105: | Line 105: | ||
}} |
}} |
||
Oczywiście nie dodaliśmy żadnego przycisku "OK" lub "Anuluj" do naszego okna dialogowego, ponieważ zostało ono stworzone do użycia z panelu zadań FreeCAD, który już zapewnia takie przyciski. Nie ma więc możliwości zamknięcia okna dialogowego ''(poza naciśnięciem przycisku zamykania okna)''. Ale funkcja show() tworzy niemodalne okno dialogowe, co oznacza, że nie blokuje reszty interfejsu. Tak więc, gdy nasze okno dialogowe jest nadal otwarte, możemy odczytać wartości pól: |
|||
Of course we didn't add any "OK" or "Cancel" button to our dialog, since it was made to be used from the FreeCAD Task panel, which already provides such buttons. So there is no way to close the dialog (other than pressing its Window Close button). But the function show() creates a non-modal dialog, which means it doesn't block the rest of the interface. So, while our dialog is still open, we can read the values of the fields: |
|||
{{Code|code= |
{{Code|code= |
||
Line 111: | Line 111: | ||
}} |
}} |
||
Jest to bardzo przydatne do testowania. |
|||
This is very useful for testing. |
|||
Wreszcie, nie zapominaj, że istnieje znacznie więcej dokumentacji na temat korzystania z widżetów Qt na FreeCAD Wiki, na stronie [[Power_users_hub/pl|Centrum Power użytkowników]], która zawiera poradnik [[Dialog_creation/pl|Tworzenie dialogu]], specjalny 3-częściowy poradnik [[PySide/pl|PySide]], który obszernie omawia ten temat. |
|||
== |
== Powiązane odnośniki == |
||
* [https://en.wikipedia.org/wiki/Qt_Creator Qt Creator |
* [https://en.wikipedia.org/wiki/Qt_Creator Dokumentacja Qt Creator] |
||
* [https://www.qt.io/ide/ |
* [https://www.qt.io/ide/ Instalacja Qt Creator] |
||
* [[Power_users_hub| |
* [[Power_users_hub|Dokumentacja skryptów FreeCAD Python]] |
||
* [[Dialog_creation| |
* [[Dialog_creation|Tutorial tworzenia dialogów FreeCAD]] |
||
* [[PySide|FreeCAD PySide |
* [[PySide|Tutoriale FreeCAD PySide]] |
||
* [http://srinikom.github.io/pyside-docs/index.html |
* [[http://srinikom.github.io/pyside-docs/index.html Dokumentacja PySide]] |
||
{{Docnav |
{{Docnav/pl |
||
|[[Manual:Creating parametric objects| |
|[[Manual:Creating parametric objects/pl|Tworzenie obiektów parametrycznych]] |
||
|[[Manual:The Community| |
|[[Manual:The Community/pl|Społeczność]] |
||
|[[Manual:Introduction| |
|[[Manual:Introduction/pl|Podręcznik:Słowo wstępne]] |
||
|IconC=Crystal Clear manual.png |
|IconC=Crystal Clear manual.png |
||
}} |
}} |
Latest revision as of 11:23, 7 March 2024
- Słowo wstępne
- Odkrywamy FreeCAD
- Praca z FreeCAD
- Skrypty środowiska Python
- Społeczność
W ostatnich dwóch rozdziałach zobaczyliśmy, jak tworzyć geometrię części i tworzyć obiekty parametryczne. Brakuje jeszcze jednego elementu, aby uzyskać pełną kontrolę nad FreeCAD: Tworzenie narzędzi, które będą współdziałać z użytkownikiem.
W wielu sytuacjach nie jest bardzo przyjazne dla użytkownika konstruowanie obiektu z zerowymi wartościami, tak jak zrobiliśmy to z prostokątem w poprzednim rozdziale, a następnie prośba o wypełnienie wartości Wysokości i Szerokości w panelu Właściwości. To działa dla bardzo niewielkiej liczby obiektów, ale stanie się bardzo uciążliwe, jeśli trzeba będzie tworzyć wiele prostokątów. Lepszym sposobem byłoby już podanie Wysokości i Szerokości podczas tworzenia prostokąta.
Python oferuje podstawowe narzędzie do wprowadzania tekstu:
text = raw_input("Height of the rectangle?") print("The entered height is ",text)
Wymaga to jednak aktywnej konsoli Python, a kiedy uruchamiamy nasz kod z makrodefinicji, nie zawsze mamy pewność, że konsola Python będzie aktywna.
Interfejs graficzny użytkownika (GUI), czyli wszystkie elementy FreeCAD wyświetlane na ekranie (menu, paski narzędzi, widok 3D, itp.), jest właśnie dla tego przeznaczony: interakcji z użytkownikiem. Interfejs FreeCAD jest zbudowany za pomocą Qt, bardzo popularnego otwarto źródłowego zestawu narzędzi GUI, który oferuje szeroki zakres narzędzi, takich jak okna dialogowe, przyciski, etykiety, pola do wprowadzania tekstu czy menu rozwijane. Wszystkie te elementy są ogólnie nazywane "widgetami".
Narzędzia Qt są bardzo łatwe w użyciu z poziomu środowiska Python, dzięki modułowi Python o nazwie Pyside (istnieje kilka innych modułów Pythona do komunikacji z Qt z poziomu Pythona). Ten moduł pozwala tworzyć i współdziałać z widgetami, odczytywać działania użytkownika (co zostało wpisane w pola tekstowe) lub wykonywać czynności w momencie naciśnięcia przycisku, na przykład.
Qt udostępnia również inne interesujące narzędzie o nazwie Qt Designer, które jest obecnie wbudowane w większą aplikację o nazwie Qt Creator. Pozwala ono na graficzne projektowanie okien dialogowych i paneli interfejsu, zamiast konieczności ich ręcznego kodowania. W tym rozdziale użyjemy Qt Creator do zaprojektowania widżetu panelu, którego użyjemy w panelu Zadanie programu FreeCAD. Będziesz więc musiał pobrać i zainstalować Qt Creator z oficjalnej strony QT, jeśli korzystasz z systemu Windows lub Mac (w systemie Linux będzie on zwykle dostępny w aplikacji menedżera oprogramowania).
W poniższym ćwiczeniu najpierw utworzymy panel za pomocą Qt Creator, który poprosi o podanie wartości długości, szerokości i wysokości, a następnie utworzymy wokół niego klasę Python, która odczyta wartości wprowadzone przez użytkownika z panelu i utworzy pudełko o podanych wymiarach. Ta klasa Python będzie następnie używana przez FreeCAD do wyświetlania i sterowania panelem zadań:
Zacznijmy od stworzenia widżetu. Uruchom Qt Creator, a następnie menu File → New File or Project → Files and Classes → Qt → Qt Designer Form → Dialog without buttons. Kliknij Dalej, nadaj mu nazwę pliku do zapisania, kliknij Dalej, pozostaw wszystkie pola projektu do wartości domyślnej ("<none>") i Utwórz. System zadań FreeCAD automatycznie doda przyciski OK / Anuluj, dlatego wybraliśmy tutaj okno dialogowe bez przycisków.
- Znajdź Etykietę na liście w lewym panelu i przeciągnij ją na obszar roboczy naszego widżetu. Kliknij dwukrotnie ostatnio umieszczoną etykietę i zmień jej tekst na Długość.
- Kliknij prawym przyciskiem myszy kanwę widżetu i wybierz Rozmieść → Rozmieść w siatce. Spowoduje to przekształcenie naszego widżetu w siatkę z obecnie tylko jedną komórką, zajmowaną przez naszą pierwszą etykietę. Możemy teraz dodać kolejne elementy po lewej, prawej, górnej lub dolnej stronie naszej pierwszej etykiety, a siatka rozszerzy się automatycznie.
- Dodaj dwie kolejne etykiety poniżej pierwszej i zmień ich tekst na Width i Height:
- Umieść teraz 3 widżety „Double Spin Box” obok naszych etykiet „Długość”, „Szerokość” i „Wysokość”. Dla każdego z nich, w dolnym prawym panelu, który pokazuje wszystkie dostępne ustawienia dla wybranego widżetu, zlokalizuj „Suffix” i ustaw ich przyrostek na „mm”. FreeCAD posiada bardziej zaawansowany widżet, który może obsługiwać różne jednostki, ale nie jest on dostępny w Kreatorze Qt domyślnie (choć może zostać skompilowany), więc na razie skorzystamy z standardowego „Double Spin Box” i dodamy przyrostek „mm”, aby upewnić się, że użytkownik wie, w jakich jednostkach pracują:
- Teraz nasz widżet jest gotowy, musimy tylko upewnić się co do jednej ostatniej rzeczy. Ponieważ FreeCAD będzie musiał uzyskać dostęp do tego widżetu i odczytać wartości długości, szerokości i wysokości, musimy nadać tym widżetom odpowiednie nazwy, abyśmy mogli je łatwo odzyskać z poziomu FreeCAD. Kliknij każde z Double Spin Boxes, a następnie w prawym górnym oknie kliknij dwukrotnie ich Object Name i zmień je na coś łatwego do zapamiętania, na przykład: BoxLength, BoxWidth i BoxHeight:
- Zapisz plik, możesz teraz zamknąć Qt Creator, reszta zostanie wykonana w Python.
- Otwórz FreeCAD i utwórz nowe makro z menu Makrodefinicje → Makrodefinicje ... → Utwórz.
- Wklej następujący kod. Upewnij się, że zmieniłeś ścieżkę pliku, aby pasowała do miejsca, w którym zapisałeś plik .ui utworzony w QtCreator:
import FreeCAD,FreeCADGui,Part
# CHANGE THE LINE BELOW
path_to_ui = "C:\Users\yorik\Documents\dialog.ui"
class BoxTaskPanel:
def __init__(self):
# this will create a Qt widget from our ui file
self.form = FreeCADGui.PySideUic.loadUi(path_to_ui)
def accept(self):
length = self.form.BoxLength.value()
width = self.form.BoxWidth.value()
height = self.form.BoxHeight.value()
if (length == 0) or (width == 0) or (height == 0):
print("Error! None of the values can be 0!")
# we bail out without doing anything
return
box = Part.makeBox(length,width,height)
Part.show(box)
FreeCADGui.Control.closeDialog()
panel = BoxTaskPanel()
FreeCADGui.Control.showDialog(panel)
W powyższym kodzie użyliśmy wygodnej funkcji (PySideUic.loadUi) z modułu FreeCADGui. Funkcja ta ładuje plik .ui, tworzy z niego widżet Qt i mapuje nazwy, dzięki czemu możemy łatwo uzyskać dostęp do podwidżetu według ich nazw (np. self.form.BoxLength).
Funkcja "akceptuj" jest również udogodnieniem oferowanym przez Qt. Gdy w oknie dialogowym znajduje się przycisk "OK" (co ma miejsce domyślnie podczas korzystania z panelu zadań FreeCAD), każda funkcja o nazwie "akceptuj" zostanie automatycznie wykonana po naciśnięciu przycisku "OK". Podobnie, można również dodać funkcję "odrzuć", która zostanie wykonana po naciśnięciu przycisku "Anuluj". W naszym przypadku pominęliśmy tę funkcję, więc naciśnięcie przycisku "Anuluj" spowoduje domyślne zachowanie (nic nie robi i zamyka okno dialogowe).
Jeśli zaimplementujemy którąkolwiek z funkcji akceptacji lub odrzucenia, ich domyślne zachowanie (nic nie rób i zamknij) nie będzie już występować. Musimy więc sami zamknąć panel zadań. Odbywa się to za pomocą:
FreeCADGui.Control.closeDialog()
Gdy mamy już nasz BoxTaskPanel, który ma 1 - widżet o nazwie "self.form" i 2 - w razie potrzeby funkcje akceptacji i odrzucenia, możemy otworzyć panel zadań za jego pomocą, co odbywa się za pomocą tych dwóch ostatnich wierszy:
panel = BoxTaskPanel()
FreeCADGui.Control.showDialog(panel)
Należy pamiętać, że widżet utworzony przez PySideUic.loadUi nie jest specyficzny dla FreeCAD, jest to standardowy widżet Qt, który może być używany z innymi narzędziami Qt. Moglibyśmy na przykład wyświetlić za jego pomocą osobne okno dialogowe. Wypróbuj to w konsoli Python FreeCAD (oczywiście używając poprawnej ścieżki do pliku .ui):
from PySide import QtGui
w = FreeCADGui.PySideUic.loadUi("C:\Users\yorik\Documents\dialog.ui")
w.show()
Oczywiście nie dodaliśmy żadnego przycisku "OK" lub "Anuluj" do naszego okna dialogowego, ponieważ zostało ono stworzone do użycia z panelu zadań FreeCAD, który już zapewnia takie przyciski. Nie ma więc możliwości zamknięcia okna dialogowego (poza naciśnięciem przycisku zamykania okna). Ale funkcja show() tworzy niemodalne okno dialogowe, co oznacza, że nie blokuje reszty interfejsu. Tak więc, gdy nasze okno dialogowe jest nadal otwarte, możemy odczytać wartości pól:
w.BoxHeight.value()
Jest to bardzo przydatne do testowania.
Wreszcie, nie zapominaj, że istnieje znacznie więcej dokumentacji na temat korzystania z widżetów Qt na FreeCAD Wiki, na stronie Centrum Power użytkowników, która zawiera poradnik Tworzenie dialogu, specjalny 3-częściowy poradnik PySide, który obszernie omawia ten temat.
Powiązane odnośniki
- Dokumentacja Qt Creator
- Instalacja Qt Creator
- Dokumentacja skryptów FreeCAD Python
- Tutorial tworzenia dialogów FreeCAD
- Tutoriale FreeCAD PySide
- [Dokumentacja PySide]
- 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