Sziasztok!
Pár napja kezdtem el tanulni aPyQT4-et, tehát lehet, hogy hülyeséget kérdezek :)
Olyan programot szeretnék írni gyakorlásképpen, ami letölt nekem a netről egy bizonyos helyről egy bizonyos mennyiségű fájlt. Maga a letöltés működik. Viszont szeretném egy progressbar-on látni, hogy hogy áll a letöltésem. Ezt úgy szeretném megoldani, hogy kiszámolom, hogy mennyi százalékot adjon hozzá minden letöltött fájl után a progressbar értékéhez a program:
hozzaadni = 100.000/osszesletoltendofajl
Utána pedig:
most = self.folyamat.value()
hozzaad = most+hozzaadni
self.folyamat.setValue(hozzaad)
De ez azért nem működik, mert a most az int lesz. És mivel 0-nál kisebb a hozzaadni értéke, azt kerekíti 0-ra. És akkor a következő fájl után a nullához adja hozzá a hozzaadni -t. És így természetesen a progresbar értéke mindig 0 marad.
Az lenne a kérdésem, hogy hogy tudnám megoldani, hogy ne csak int-et tudjak hozzáadni a progressbar értékéhez?
Köszönöm: Zsolt
- 971 megtekintés
Hozzászólások
"És mivel 0-nál kisebb a hozzaadni értéke, azt kerekíti 0-ra. "
???
______________________________________________________________________
"ONE OF THESE DAYS I'M GONNA CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
Jó, lehet, hogy rosszul fogalmaztam :) Minden letöltés után kiirattam parancssorba, hogy mennyit akarok hozzáadni, és hogy jelenleg mennyi a progressbar értéke. A progressbar értéke mindig 0 volt. Amit hozzá akartam adni, az mindig 0,4 körül.. (Már nem emlékszem a pontos számra, de mindig ugyanannyi volt)... És mindig ugyanennyi volt a jelenlegi érték + a hozzáadandó (Mindig állandó) érték is. Tehát én 0,4 --et adtam hozzá, de attól még 0 maradt.
- A hozzászóláshoz be kell jelentkezni
Kerekitsd fel!
______________________________________________________________________
"ONE OF THESE DAYS I'M GONNA CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
Így 0,4 helyett minden fájlletöltésnél 1 % -ot adnék hozzá a progressbar-hoz. Tehát a letöltés kevesebb mint a felénél már 100 % -on állna! (A teszt során 224 fájlt akartam letölteni)
- A hozzászóláshoz be kell jelentkezni
Akkor valahogy korrigalnod kell az erteket, setValue() egesz szamot var!
______________________________________________________________________
"ONE OF THESE DAYS I'M GONNA CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
És gondolom csak a setValue() -val lehet értéket adni neki...
Ettől féltem :) Akkor kitalálok valamit :D Az a baj, hogy most így hirtelen nem jut eszembe semmi, hogy megfelelően pontos legyen :)
- A hozzászóláshoz be kell jelentkezni
Szerintem a hozzaad legyen double. A most valtozot castold double tipusuva mielott osszeadod a hozzaadni-val, majd pedig a SetValue-ban hasznalj round-ot vagy trunc-ot hogy kapj vissza a double-bol integert vagy castold ha kell.
(Csak otlet szinten mondom, nem ertek pyqt4-hez)
- A hozzászóláshoz be kell jelentkezni
Ez így nem lesz jó, ne a progress bar értékéd olvasd vissza és adjál hozzá mindig, mert a progress bar kerekítése tacsra vágja így a dolgot. Ezt úgy szokták megoldani, hogy a fájlokat számolod, tehát az letöltendő és letöltött fájlok számából kiszámolod hány százalék kész és azt egyszerűen setValue cuccal beírod a progress bar-ba.
Szerk.: juteszembe még szebb megoldás, ha a setFormat()-al átállítod a formátumot és nem százalékot mutatsz, hanem azt írod le, hogy "N fájlból M letöltve". Lásd részletesen a setFormat()-nál! Ez szebb és nem kell számolgatni.
- A hozzászóláshoz be kell jelentkezni
Nagyon szépen köszönöm a segítséget!
Ebből is tanultam valamit :) Mindjárt utána is nézek a setFormat -nak :)
- A hozzászóláshoz be kell jelentkezni