V půlce programu si to klidně forkneš a očekáváš, že z potomka si v pohodě můžeš měnit proměnné v rodičkovském procesu, navíc z obou procesů saháš do GTK? No fuj :-) GTK je myslím thread-safe (po nějaké inicializaci, pokud si dobře vzpomínám), ale že by i multiprocess-safe, to pochybuji :-)
Doporučuji použít místo podprocesů vlákna nebo zařídit nějakou meziprocesovou komunikaci - nejjednodušeji asi rouru/socketpair - tak aby s GUI manipuloval jen jeden proces. PM 2009/6/30 Filip Bartmann <[email protected]>: > V této části kódu: > ---------------------------------------------------------------------------------- > def __init__(self): > self.mixer=alsa.Mixer(); > if self.mixer.getmute()[0]==0: > > self.icon=gtk.status_icon_new_from_stock(gtk.STOCK_YES); > else: > self.icon=gtk.status_icon_new_from_stock(gtk.STOCK_NO); > > pid=os.fork(); > if pid==0: > while True: > mixer=alsa.Mixer(); > if mixer.getmute()[0]==0: > print "UNMUTED"; > > self.icon.set_from_stock(gtk.STOCK_YES); > elif mixer.getmute()[0]==1: > print "MUTED"; > self.icon.set_from_stock(gtk.STOCK_NO); > time.sleep(1); > > self.icon.connect("popup-menu",self.show_controls); > ---------------------------------------------------------------------------------- > > mám problém v přístupem k self.icon v potomkovi. Na CMDLině mi to sice > správně hlási MUTED/UNMUTED ale ikona se nemění. Nevíte kde mám chybu? > > Za rady předem děkuji. > > Filip Bartmann > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
