Nejsem si jistý, ale nemůže to být tím, že ikonu změníš až po té, co vytvoříš okno? Myslím, že správně se nejdřív nastaví text a ikona a pak se okno teprve vytváří.
Příspěvky odeslané z IP adresy 212.24.152.–
To Blujacker : ve verzi 2.5 vrací funkce list.sort() None, ale existuje funkce sorted(), která vrací nový objekt.
Nevím jestli jsem já nebo ty správně pochopili dotaz, každopádně je to tím, jak je napsán.
Mě spíš přišlo že jde o zvuk někde mimo harddisk nebo RAM počítače, takže vstup z mikrofonu.
Mě by se taky moc líbilo, kdybych našel knihovnu, která zvládá vstup z mikrofonu.
Ale ne že zvuk z mikrofonu vstoupí a nechá se zakopat do souboru, ale že budu rovnou moci pracovat s daty. Například tak, aby šla udělat hra (resp. jiný program) ovládaná hlasem.
Dá se říct, že jsem už dlouho snil o hlasovém modulátoru. Dokonce jsem to už i zkoušel, ale žádná dostupná knihovna k nalezení, ani pro Python, ani pro Visual Basic (v kterém jsem dělal dřív).
No nic, kdybyste náhodou někdo věděl, tak napište.
Koumes21
Doporučuji modul Threading (normálně už je v Pythonu), je poněkud složitější než obyčejný thread, ale na netu se dá najít hromada dokumentace.
Mám tu krásnej příklad na práci s modulem Threading (alespoň mně se líbí), je to skript na generování prvočísel, hlavní vlákno počítá, vedlejší vlákno zobrazuje, jak to vypadá. Algoritmus je pravděpodobně z Wikipedie. Zkoušel jsem to na Windowsech a funguje. Škoda, že je v tom takovej bordel. K tvému problému doporučuju Threading.Lock, kde když dvě vlákna zavolají lock.acquire(), pustí to dál jen jedno, druhé čeká, až v prvním proběhne lock.release()
import time,threading,sys
class show(threading.Thread):
def __init__(self,lock,data,limit):
threading.Thread.__init__(self)
self.lock=lock
self.data=data
self.limit=(str(limit-1),str(int(limit**0.5)))
self.lens=(len(self.limit[0]),len(self.limit[1]))
self.d=sum(self.lens)*2+8
def run(self):
while True:
lock.acquire()
a,b,c=self.data
lock.release()
if not a:
sys.stdout.write("\x08"*self.d+\
self.limit[1]+" / "+self.limit[1]+\
"; "+self.limit[0]+" / "+self.limit[0]+"\n")
break
sys.stdout.write("\x08"*self.d+\
str(b).rjust(self.lens[1])+" / "+self.limit[1]+\
"; "+str(c).rjust(self.lens[0])+" / "+self.limit[0])
time.sleep(1)
bad_input=True
while bad_input:
limit=raw_input("Find primes up to ")
try:limit=int(limit)+1
except:pass
else:bad_input=limit<2
started=time.time()
print "preparing variables..."
is_prime=[]
c2=limit/1000000
c4=str(c2)
c3=len(str(c2))
sys.stdout.write("0".rjust(c3)+" / "+c4)
for c1 in xrange(c2):
is_prime+=list([True]*1000000)
sys.stdout.write("\x08"*(c3*2+3)+str(c1).rjust(c3)+" / "+c4)
is_prime+=list([True]*(limit%1000))
sys.stdout.write("\x08"*(c3*2+3)+c4+" / "+c4+"\n")
s=int(limit**0.5)+1
lock=threading.Lock()
data=[True,2,0]
thr=show(lock,data,limit)
thr.start()
print "generating..."
while data[1]<s:
if is_prime[data[1]]:
lock.acquire()
data[2]=data[1]**2
lock.release()
while data[2]<limit:
is_prime[data[2]]=False
data[2]+=data[1]
lock.acquire()
data[1]+=1
lock.release()
data[0]=False
thr.join()
est=int((time.time()-started)*1000)
print "generated in "+str(est)+" ms"
print "formating output..."
primes=[]
k=100000
m=limit/k
sm=str(m)
lm=len(sm)
c1=0
for c1 in xrange(m):
for c2 in xrange(k):
act=c1*k+c2
if is_prime[act]:
primes.append(act)
sys.stdout.write("\x08"*(lm*2+3)+str(c1).rjust(lm)+" / "+sm)
for c2 in xrange(limit%k):
act=c1*k+c2
if is_prime[act]:
primes.append(act)
sys.stdout.write("\x08"*(lm*2+3)+sm+" / "+sm+"\n")
l=len(primes)
print "found "+str(l)+" primes"
if l:
print "largest is "+str(primes[-1])
print "saving generated primes into file primes"+str(limit-1)+".txt"
out="\r\n".join(str(n) for n in primes)
fle=file("primes"+str(limit-1)+".txt","wb")
fle.write(out)
fle.close()
print "write \"q\" to quit or something else to show generated primes"
if raw_input()!="q":
print out
print "press RETURN to quit"
raw_input()
Koumes21
Teda psal jsem to narychlo, vzal jsem střeva svého staršího skriptu, takže to není ošetřené (error pokud žadný proces pspad.exe neběží atd.), ale základ, který je k tématu, je snad jasný
Vidím, že tento příspěvek je poněkud starší, ale stále nezodpovězený
Na fórum moc nechodím, jsem spíše v konferenci, ale můžu poradit
Na tohle používám modul pywin32 http://sourceforge.net/projects/pywin32/
Je to vlastně několik modulů pro používání API windowsů.
Protože dokumentace se těžko shání a není dost přehledná, uvádím vlastní příklad na dané téma
Tady je příklad, který potřebujete:
import win32process as proc
import win32api as api
from win32con import *
def procesy(): # funkce vraci seznam vsech procesu obsahujici id,
# nazev spusteneho exe souboru a vsech nactenych
# modulu a cestu k nim
pids=proc.EnumProcesses() # ziskame id vsech procesu
procesy=[]
for pid in pids:
try:handle=api.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,False,pid)
except:continue # obcas si Windowsy vymysli proces, ktery neni proces
# nevim proc to delaji, ale kdyz k tomu dojde,
# vyhodi to tady chybu, proto to preskocime
moduly=[]
for mod in proc.EnumProcessModules(handle): # ziskame vsechny nactene moduly daneho procesu
# vcetne samotneho exe souboru
pth=proc.GetModuleFileNameEx(handle,mod) # zjistime umisteni daneho modulu
moduly.append((pid,pth[pth.rfind("\\")+1:],pth)) # vratime id procesu, nazev exe souboru a uplnou cestu
procesy.append(moduly)
return procesy
def kill(pid): # pokusi se zabit proces podle jeho id
try:
handle=api.OpenProcess(PROCESS_ALL_ACCESS,False,pid)
proc.TerminateProcess(handle,proc.GetExitCodeProcess(handle))
except: return False # pokud se nepovedlo, neda se nic delat
else: return True # pokud v poradku, je to jen dobre
def run(path): # spusti proces podle jeho umisteni, pripadne otevre soubor
api.ShellExecute(0,None,path,None,path[:path.rfind("\\")],1)
for each in procesy(): # zjisti si procesy
print "%s:%s"%each[0][:2] # napis jmeno exe souboru
if each[0][1].lower()=="pspad.exe": # chces-li neco vypnout, vypni to
vypnuto=each[0][2] # poznamename si, co jsme vypnuli
print "--->"+("proces zastaven" if kill(each[0][0]) else "proces nelze vypnout")
run(vypnuto) # zase to zapni :)
možná stojí za zmínku ještě funkce win32api.GetCurrentProcessId(), která (již podle názvu) vrací id našeho procesu
Nejlepší dokumentace k pywin32 je v jeho vlastní složce, na netu nejde nic moc lepšího najít.
S přáním úspěchů se loučí :)
Koumes21