Wpis z mikrobloga

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 wątek się skończy bo nie przesyłają się sygnały.
#python #pyqt #pyqt5 #qt #qt5 #programowanie #naukaprogramowania
  • 9
@xaoc: Sorki nie zaczaiłem wczoraj. Nie przesyłają się sygnały z wątku nowego, bo stary ich nie obsługuje tylko czeka cały czas w pętli while. Jak ją usuniesz to powinno zadziałać. Takich i podobnych pętli się w Qt nie robi, koniec.
@lionbest: W sumie to potrzebują na razie aplikację konsolową. Z interfejsem. Czyli cały czas możesz pisać komendy, a w tle się one wykonują. Nie widziałeś może podobnego przykładu?
@xaoc: Nie wiem jak to sie robi w qt, ale może inna podpowiedź pomoże, jest taka biblioteka http://libuv.org/ której generalnie używa się do pisania aplikacji terminal-like czyli, że coś się cały czas wyświetlać może, a ty cały czas nasł#!$%@? komend użytkownika.
@xaoc: W cale nie musisz czekać, wszystko możesz mieć asynchronicznie. Teraz widzę że w ogóle chyba nie stworzyłeś głównej pętli. Każdy program w Qt wygląda tak że tworzy się przykładowo na początku QCoreApplication i na końcu programu wykonuje się exec_. Program nie wyjdzie do puki nie wykonasz gdzieś QCoreApplication.exit(0). Wszystko w Qt raczej powinno się robić asynchronicznie. Więc na samych sygnałach, slotach i timerach.

Generalnie takich czekań jak zrobiłeś
@lionbest: Czyli jak powiedzmy, że mam trzy klasy UserInterface - komunikacja z użytkownikiem, Worker(on tak naprawdę odwala robotę), Device(klasa odpowiedzialna za komunikację z fizycznym urządzeniem ma otwarty socket)

I teraz co powinno i jak być uruchomione?
Worker i Device powinny być składowymi UserInterface?
@xaoc: Tak jak masz jest ok, tylko ja mówiłem o zupełnie czymś innym. Jak korzystasz z GUI to musisz stworzyć QtGui.QAplication i wykonać na nim exec bo inaczej w ogóle nie będzie działać. Jak nie korzystasz z modułu GUI to powinieneś stworzyć QtCore.QCoreApplication.
@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.