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,
@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ń
  • Odpowiedz
Cześć. Mam pytanie odnośnie kodowania w PyQt5 przycisku pomocy z window bara. Tworzę sobie GUI i chciałbym zaprogramować przycisk z pic1 tak żeby wyświetlał mi tekst gdy użyje się go na jakimś obiekcie w oknie. Obecnie wyświetla mi "pustą notatkę" jak na pic2 i nie mogę znaleźć kompletnie informacji jak cokolwiek do tej notatki dodać. Byłbym wdzięczny za jakąś wskazówkę. Z góry dzięki ( ͡° ͜ʖ ͡°)

#
notrzeba - Cześć. Mam pytanie odnośnie kodowania w PyQt5 przycisku pomocy z window ba...

źródło: pic

Pobierz
Mam pewien problem i nie rozumiem dlaczego to tak działa a nie inaczej.
Robię sobie tutorial https://www.pythonguis.com/tutorials/pyqt6-signals-slots-events/

Dochodzę do tego momentu QPushButton Signals, przepisałem kod i nie działa, wyświetla mi taki błąd

Traceback (most recent call last):
File "C:\Users\xxx\Desktop\Extractbooks\PyQttest.py", line 22, in
window = MainWindow()
File "C:\Users\xxx\Desktop\Extractbooks\PyQttest.py", line 12, in init
button.clicked.connect(self.thebuttonwasclicked())
TypeError: argument 1 has unexpected type 'NoneType'

Ta metoda (chyba tak to się nazywa) connect podświetla mi się
via Wykop Mobilny (Android)
  • 0
@alteron:
Usuń nawiasy. Masz podać tam funkcję,a nie ją wywołać. Twoje thebuttonwasclicked nie zwraca nic = zwraca None, więc ostatecznie jest button.clicked.connect(None) = wyjątek
  • Odpowiedz
Właśnie piszę aplikację w #pyqt #qt i siedzę już nad nią bite 40h nieprzerwanego kodzenia. Mam 3500 linii kodu (review zostawiłby wiele do życzenia), obsługę pysftp, hashlib, csv, paramiko, cx_oracle, os, fabric.
Wcześniej dziubałem skrypty w #python tak o dodatkowo dla zabawy, ale jak zobaczyłem, że to wszystko można wstawić w okienka... I to taka banalna sprawa bo pod zwykłym przyciskiem jest wywołanie funkcji. ()
z perspektywy osoby uczącej się, czy ja wiem czy źle z doświadczenia wiem, że nawet jak jest sobie projektowana aplikacja z rozbudowaną dokumentacją, to jak przychodzi nowy team, to chce ją zaorać i robić po swojemu z nowym sdk itp. itd. :D


@zortabla_rt: No tak, były w tej bajce smoki? Dużego projektu nie widziałeś na oczy chyba. Coś kiepskie te Twoje doświadczenie ( ͡~ ͜ʖ ͡°) Ja
  • Odpowiedz
#programowanie #macos #python #pyqt #pyqt5 #pyinstaller #bigsur

Prawdopodobieństwo równe zeru, że ktoś coś, no ale do rzeczy. Mam aplikację w PyQt5, którą sobie z powodzeniem pakuję pyinstallerem do makowego bundla .app na High Sierrze i na każdym kolejnym macOS ładnie śmiga. Problem się zaczyna na Big Sur. Aplikacja niby działa i startuje, tworzy pliki, wypluwa coś tam na konsolę jak odpalę executabla w środku, ale nie pojawia się GUI, nawet puste okno
@zwei: a nie, dobra chyba coś znalazłem xd zawsze tak jest, nasmarujesz post na wykopie, to zaraz rozwiązanie samo się znajduje
  • Odpowiedz
@zwei: nie zlicze ile razy mialem sytuacje, że zacząłem pisać pytanie odnośnie jakiegoś problemu i po wypisaniu wszystkiego co wiem na temat problemu znalazłem przy okazji błąd albo błędne założenie, ktore pozwolilo mi wyjsc z tarapatow
  • Odpowiedz
@F0rT3hW1n: Robiłem w ten sposób i rzeczywiście zwykłe wykresy działały, ale przy tym z Orange miałem problem. Nie pamiętam już dokładnie jaki, ale chyba było coś w rodzaju, że to co rysuję w Orange nie ma elementu canvas.
  • Odpowiedz
@dylo: prawdopodobnie wszystkie dane, które rysuje Orange znajdują się w obiekcie klasy, więc można je wyciągnąć a mając dane można je sobie wyrysować jak tylko chcesz
  • Odpowiedz
Wrzucam jeszcze raz bo w nocy to jednak mało osób przegląda. A mi naprawdę zależy, żeby to działało.
http://wklej.org/hash/24529c9f045/

generuje wyjście:

Start!
To się wyświetla
TESTETT!
while
while
while

i nieskończny while

a spodziewałem się:

Start!
TESTETT!
To się nie wyświetla
To się wyświetla
TESTETT!
while
while
while

i nieskończny while

@lionbest zwrócił mi uwagę, że nie wywołuję :quit na self.th. Ale właśnie głównym powodem, jest to, że nie wiem kiedy ten
@lionbest: Znasz jakąś książkę z dobrym wstępem do zrozumienia o czym piszesz. U mnie problem jest w tym, że nie rozumiem podstaw. I nie mogę znaleźć wytłumaczenia jak to wszystko działa. (Swoją drogą zadziałało to co napisałem -- ale nie wiem do końca dlaczego ( ͡º ͜ʖ͡º) ) Interesuje mnie głownie python Qt i C/C++ więc najlepiej jak by to było na przykładzie właśnie tych języków.
  • Odpowiedz
@lionbest: No wlasnie. Sygnały nie działają. Ja go nie muszę w sumie kończyć. Ale chce swój własny sygnał, którym cos, cokolwiek przyśle do DamTerm'a. W przykładzie używam dwóch sygnałów (testt oraz pasInfo) i żaden nie drukuje nic na wyjściu standardowym. Pomimo że sama metoda run się uruchomiła.
  • Odpowiedz
@lionbest: Przykład jest okrojony (dlatego nie ma sensu). Spodziewałem się wyniku:
Start!
TESTETT!
To się nie wyświetla
To się wyświetla
TESTETT!
while
while
while
while
while
while
  • Odpowiedz
Hej mam klasę która dziedziczy z QThread i wykonuję coś takiego:

self.quit()
self.exit()
print("Po exit?")

Moim zdaniem print się nie powinien wykonać nigdy.


Jakieś rady?
#qt5 #qt #python #pyqt #pyqt5 w sumie to też #cplusplus bo to tylko nakładka pythonowa na funkcje w c++
@xaoc: Zwykle w programowaniu używa się flag do zasygnalizowania chęci ubicia wątku. Podejrzewam, że te funkcje ustawiają taką właśnie flagę, a wątek faktycznie ubijany jest w innym momencie. To są tylko moje przypuszczenia, bo w Qt się nie bawiłem, ale mechanizmy zazwyczaj są podobne.
  • Odpowiedz
A skoro ten wątek nie ma nic więcej robić to co mam wywołać na nim samym wait()?


@xaoc: return (bo zakładam, że chodzi Ci o to jak nie wykonywać nic więcej w metodzie run() wątku)

Metody exit() i quit() są w QThread tożsame (tyle że quit() jest slotem, a exit() może jeszcze przyjąć kod wyjścia) i robią tylko tyle, że jeśli wcześniej w wątku wywołałeś exec() (czyli uruchomiłeś pętlę zdarzeń w
  • Odpowiedz
Witam.

Stoję przed teoretycznie prostym zadaniem pisząc w PyQt, o które rozbijam się już drugi dzień.
Chcę otworzyć 8 bitowym plik bmp (FormatIndexed8 ?),
nałożyć na niego tekst i zapisać bez zmiany parametrów (8 bit color depth i zachowane wartości kolorów).
Doki niestety mówią że:

Note: Drawing into a QImage with QImage::Format
Indexed8 is not supported.

Działam z QImage i flagami z dokumentacji,
jednak czego bym nie robił (zamiana na pixmap/convert
@qbek: Ale wiesz, ten format jest 8-bitowy i pozwala na użycie tylko 256 kolorów, wiec jeżeli używasz większej liczby to przy zapisie powstają jakieś zmiany.
  • Odpowiedz
@jedrus7: Można sprzedawać soft na licencji GPL. Możesz mi zapłacić za napisanie "hello world" na licencji GPL, dostaniesz binarkę oraz kod (wymóg GPL) - co z tym dalej zrobisz jest Twoją sprawą.

Jeśli to "hello world" udostępnisz np. jako usługę w sieci, za której wykorzystanie będziesz pobierał opłatę od użytkowników - nie ma problemu. Oni nie kupują oprogramowania, tylko usługę.
  • Odpowiedz
Cześć, posiadam #python v3.4 i właśnie zainstalowałem sobie #pyqt v4, jednak gdy chcę uruchomić przykładowy kod importując

from PyQt4 import QtGui, QtCore
Pojawia mi się błąd o treści

ImportError: DLL load failed: %1 nie jest prawidłową aplikacją systemu Win32
Chodzi o to, że zainstalowałem nie tą wersję co trzeba, czy może nie skopiowałem jakiegoś pliku?

Druga sprawa, to czy wygenerowane GUI(jego treść) da się przenieść do kodu, czy trzeba kombinować z terminalem?
@morsisko: Kodu z Designera się nie kopiuje :D

Możesz plik .ui skompilować do .py używając pyuic. Albo jeśli to jakaś prosta appka… to zrobić jak ja i po prostu ładować plik .ui wewnątrz pythona.

class MainWindow(QMainWindow):
....def __init__(self, parent=None):
........super(MainWindow, self).__init__(parent)
........uic.loadUi("ui/MainWindow.ui", self)
Jakoś tak… Możesz podglądnąć mój projekt jak chcesz, niedokończony niestety:

http://code.morsik.info/xsm/

Kod w branchu 'develop'.
  • Odpowiedz