Seite 1 von 1

PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 16. Juni 2010, 11:32
von majinv
Sers zusammen,

ich hab gelesen, dass ich um mit pygame mehrere Fenster erstellen zu können, mehrere Threads brauche...
allerdings mag der Compiler nicht das, was ich schreibe...

ich habe eine datei, in der ich mir jeweils eine instanz der anderen beiden klassen mache...

Code: Alles auswählen

import threading

from node import Mic
from node import Mic2
from shared.models import Logger

def startNode():
    logger = Logger.Logger()

    mic = Mic.Mic()
    logger.log("Initscript", "Mic initiated...")
    mic2 = Mic2.Mic2()
    logger.log("Initscript", "Mic2 initiated...")
Die beiden Klassen die ich aufrufe haben jeweils den thread kopf, der vorgeschrieben ist...
und beide erzeugen ein fenster... allerdings, wird das eine vom anderen überschrieben... und ich kann mir nicht erklären, warum das so ist...
kann mir da jemand helfen?

Code: Alles auswählen

class Mic(threading.Thread):

	def __init__(self):

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 23. Juni 2010, 16:08
von majinv
offensichtlich nicht... oder keiner hatte lust ;-)

ich habs anderes gelöst und für die die eine ähnliche methode suchen:

Code: Alles auswählen

	def whileTrue(self):

		...
		
		while self._running:

			...
	
				if self._runningSoundLevel == True:
					self.soundLevel(end_pos)
				if self._runningSoundLevel2 == True:
					self.soundLevel2(start_pos, end_pos, p)

				#Update screen
				pygame.display.flip()

	def soundLevel(self, end_pos):
		...
		
	def soundLevel2(self, start_pos, end_pos, p):
		...
somit werden dann einfach 2 surfaces in einem fenster erschaffen und man braucht keine 2 fenster mehr...
beide werden mit den selben daten versorgt und aktualisiert...

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 23. Juni 2010, 19:08
von EyDu
Hallo.

Dir kann wahrscheinlich niemand helfen, da du keinen relevanten Code zeigst. Das ist alles nur sehr allgemeines Zeugs.

Ich habe aber noch zwei Tips für dich:

Code: Alles auswählen

from node import Mic, Mic2
Und überlege dir mal, warum du das Ergebnis von "self._runningSoundLevel == True" nicht gegen "True" testest und was an deiner Zeile überflüssig ist ;-)

Edit: Und natürlich möchtest du noch einen Blick in PEP8 werfen.

Sebastian

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 30. Juni 2010, 12:36
von majinv
naja gut... was ist denn für dich relevanter code? ;-)
ich will ja nichts spezifisches... sondern eigentlich nur 2 instanzen von pygame erzeugen um 2 fenster zu erhalten...
da braucht ja niemand code... entweder es geht... oder es geht nicht... :-P
aber das ist ja erstmal hinfällig...

was den coding style angeht, da hast du recht... ich hab noch 8 spaces statt 4 ;-)
... ich behaupte einfach mein code sei uralt :P
aber recht hast du dennoch :)

deinen tip mit dem if-statement allerdings verstehe ich nicht...
ohne es getestet zu haben, meinst du das ich '== True' weglassen kann, weils ja eh ein boolean ist?
und warum teste ich es genau nicht gegen True?

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 30. Juni 2010, 13:50
von rads
@majinv

ich denke er meint das

Code: Alles auswählen

if var==True:
auch durch

Code: Alles auswählen

if var:
ausgedrückt werden kann. Nach meiner kleinen Meinung aber geschmacksache und manche mögen es wenn der vergleich leichter lesbar ist. Oh jetzt fang ich mir wieder Schläge ein :oops:

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 30. Juni 2010, 14:03
von majinv
hmmm aber laut konvention, wird je ein leerzeichen zwischen operanden gesetzt... :)
und das untere hab ich ja selbst angesprochen...
mir scheint aber, dass er auf etwas anderes hinauswollte... für mich liest sich das zumindest so...

Re: PyGame mehrere Fenster = mehrere Threads?

Verfasst: Mittwoch 30. Juni 2010, 15:45
von Leonidas
Wenn ich mich richtig erinnere kann SDL nicht mehr als ein Fenster, da helfen auch Threads nicht.