Wpis z mikrobloga

Cześć, mam problem z aplikacją w Pythonie.

Piszę aplikację z wykorzystaniem PyQt i matplotlib. Za pomocą przycisku z poziomu okna nadrzędnego aplikacji odpalam funkcję która ma za zadanie wygenerować wykres. Wewnątrz funkcji znajduje się kod który definiuje wykres (sprawdzony i poprawny) i na końcu plt.show().

Po wywołaniu tej funkcji wszystko działa jak powinno do momentu pojawienia się okna z wykresem. Problem polega na tym że okno z wykresem jest całkowicie nieinteraktywne, nie da się go przesunąć, zminimalizować, zamknąć, nie mówiąc już o jakimkolwiek przesuwaniu czy przybliżaniu wykresu (przy czym okno aplikacji nadrzędnej dalej jest interaktywne). Dopiero jak zamknę okno aplikacji nadrzędnej to okno z wykresem "odżywa" i staje się interaktywne.

Modalność okna nadrzędnego aplikacji? Juz sprawdzałem, mam ustawione self.setWindowModality(Qt.NonModal) więc chyba nie powinno mi blokować interakcji z wykresem, chociaż słyszałem że nawet przy okanch modalnych plt.show() daje wykresy z którymi i tak można wchodzić w interakcję...

Będę bardzo wdzięczny za każdy pomysł co może być nie tak.

#programowanie #python #pyqt #matplotlib
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@notrzeba: chat gpt nie pomogl?

Cześć! Wygląda na to, że masz do czynienia z problemem związanych z pętlą zdarzeń w aplikacji PyQt i matplotlib. Aby rozwiązać problem z niereagującym oknem z wykresem, możesz użyć jednej z dwóch technik:

1. Użycie matplotlib.pyplot.show(block=False): Zamiast plt.show(), możesz użyć plt.show(block=False), co pozwoli na kontynuowanie działania aplikacji i interakcję z innymi elementami. Pamiętaj, że w tym przypadku będziesz musiał odpowiednio zaktualizować pętlę zdarzeń PyQt, aby
  • Odpowiedz
  • 0
@Vane1905 @MilionoweMultikonto obawiam się że problemem może być struktura kodu mojej aplikacji ( ͡° ʖ̯ ͡°) klikając "dalej" kolejne okna odpalają się z poprzedniego okna tzn. okno 2 inicjuje się z poziomu okna 1, okno 3 inicjuje się z poziomu okna 2 itd. Przed odpaleniem się np okna 2, okno 1 chowam za pomocą okno1.hide, czyli znika z ekranu ale de facto działa tle. Dzisiaj inaczej
  • Odpowiedz