Wpis z mikrobloga

Czołem wszystkim!

Znacie może jakieś dobre przykłady zarządzania sesjami w PySide? Obecnie mam projekt, gdzie każde nowe rozdanie kreuje pewien obiekt ze strukturą folderów. W trakcie używania programu możesz dodać pliki z danymi, robić wykresy (do pliku i w Canvas). Dodane pliki z danymi są na bieżąco wyświetlane w Widgecie TableView oraz kopiowane do lokalnego pliku i wyświetlane na widgecie ze strukturą plików (QFileSystemModel) oraz w osobnej zakładce na TreeView , gdzie itemami są pliki, a pochodnymi są zmienne z pliku (TreeView). Ich kliknięcie zmienia centralWidget do TabView widget wyświetlający wykres danej zmiennej jako matplotlib canvas. Szukam jakiegoś dobrego poradnika jak teraz tym całym bajzlem zarządzać, żeby można było utworzyć projekt od zera, pododawać obiekty, które zostaną przetworzone na widok plików, widok zmiennych, wyrysowane jako wykresy, zapisane do plików etc... Jak zapisać aktualny stan programu, by później otworzyć wraz z położeniem widgetów i extra danymi pochodzącymi z instancji klas danych, wykresów etc. Jak konstruować config file dla tego typu dużego zadania?

Obecnie kombinuje z zapisywaniem instancji w słowniku, ale to miałkie jest.

#programowanie #python
  • 10
@biwalencik: ja nie znam tej technologii o której piszesz ale programy które znam realizują to w taki sposób że stan zapisują w plikach xml. Musisz mieć to też jakoś obiektowo rozkminione- każdy element niech dziedziczy bo jakiejś klasie stanu i musisz mieć coś globalnego co zbiera stany poszczególnych obiektów i zapisuje do pliku a potem również niech ten stan odtwarza przy starcie tak bym to widział
@b0lec
PySide jest zwolnionym wrapperem pythona na Qt.
Główna klasa, która zarządza poszczególnymi zakładkami to oczywiście okno główne aplikacji. Inne klasy lądują dane do widoków, inne tworzą te widoki.
PySide ma klasę QSettings, która zajmuje się przechowywaniem informacji o oknah, widgetach i ich atrybutach, ale pewnie bez ładowania lokalizacji plików z danymi i wykresiw zrobionych przez użytkownika do jakiegoś JSoN, Xml, albo mongo się nie obejdzie.

Czyli dużo roboty... :/
@biwalencik: skąd niby ta zmiana skoro licencjonowanie Qt dokładnie o tym mówi? Trochę dziwne mi się wydaje by to, że używasz wrappera zmieniało licencję tego pod spodem…

No, chyba że oni sobie sami wzięli kod Qt i go przekompilowali, a nie zależą od Qt samego w sobie… to może :D
@morsik
Nie zmieniasz kody Qt, tylko używasz tego jako biblioteki. Właściwie PySide używa.
Temat obczajony przez prawników. PySide zezwala na używanie swojego kodu do projektów komercyjnych bez licencji i nie musisz udostępniać źródeł.
@biwalencik: no sporo raczej, zapisywanie i odczytywanie stanu łatwe nie jest mimo wszystko, ale chyba dasz radę :-)
Jak cię goni czas i chcesz to zrobić szybko mam bardziej szalony pomysł- opakuj apkę w maszynę wirtualną chyba to ma jakieś api i zrob komunikację. Maszyna wirtualna będzie zarządzać stanem twojej apki. Wiem #!$%@? pomysł xD