Denna kod generar inget fel men heller inte något fönster som är förväntat. Dock om jag lägger till
"sys.exit(app.exec_())" sist i koden dyker det upp ett fönster. "sys.exit(app.exec_())" hittade jag i ett annat exempl.
-Vad kan felet vara?
-Vad gör sys.exit(app.exec_())? Jag har sök efter detta men inte hittat något vettigt.
Jag kör umbuntu 15.10 o python2.7 (försökt med python3 men då hittas inte Qt4bibliotek)
sys.exit(..) avslutar processen och sätter retur-koden till sitt argument, det är inte det viktiga i det här fallet.. Det viktiga är metoden som anropas _innuti_ sys.exit, dvs app.exec_()
Qt är event-drivet med en event-loop som ligger och pollar events och sen agerar på dem. För att starta processingen av event måste du anropa app.exec_(), som returnerar när applikationen stängs. Dvs, app.exec_() är det som "kör" hela applikationen, sys.exit(..) sätter returkoden till det som app.exec_() returnerar (vanligen 0) och avslutar python-processen.
Aha jag trodde att "show()" drog igång den grafik man satt upp. Nu fattar jag lite hur "app.exec_()" och "sys.exit()" fungerar. Att exempelförfattaren inte behöver använda "app.exit()" i
kan bero på att han kör Windwos och hans "idle-miljö" är annorlunda än min. Jag var väldigt störd att det fungerade olika hos mig och honom men har jag fått lite mer känsla på vad jag häller på med.
och se hur man blir hängande på varje "app.exec_()" men det måste finnas mekanismer för att komma vidare i koden utan behöva slå ihjäl ett fönster men jag har inte kommit dit ännu eller det är väl så att man har knappar och dyligt i fönstret som anropar andra funktioner
Nej, så snart du anropar app.exec_() så lämnar du över kontrollen till Qts event-loop. Därefter måste all exekvering antingen ske i en separat tråd (som du skapat innan, och den kan inte direkt interagera med GUIt) eller som reaktion på events som händer, och då måste du så klart ha registrerat event-handlers innan du startar.
Du ska bara ha en app.exec_() i din kod, allt annat är något fel
Så har man fönstret i en tråd och gör annat i andra trådar? Tex om man har ett fönster och man vill uppdatera ett mätvärde konternuerlig coh presentera det i fönstret