Hei
Miten saadaan PyQt näyttämään heti ajettavan ohjelman ikkunan.
Eli PyQt:llä tehty ohjelma (koe.pyw) lukee tiedostoa.
Tiedosto (tiedosto.txt) joko on tai ei ole kovalevyllä, kun koe.pyw käynnistetään.
Jos se on levyllä luetaan heti ja käsitellään saatu data.
Jos tiedostoa ei ole ole levyllä, odotetaan sen ilmestymistä levylle XX sekunttia.
Odotusaikana pitäisi näkyä ProgressBar kertomassa käyttäjälle, että jotain tapahtuu.
koe.pyw koodi toimii, jos tiedosto.txt ei ole, mutta ohjelman ikkuna ilmestyy näkyviin vasta, kun progressBar on täydet 100%
Ikkunan ollessa näkyvissä ohjelma toimii haltulla tavalla, kun painettaan Feikki nappulaa. ProgressBar palkki etenee kohti 100%.
Palkki pysähtyy, jos tiedosto.txt “ilmestyy” levylle.
Siis lyhyesti. Miten ajettavan ohjelman ikkunassa olevat tiedot saa heti näkyviin ohjelman käynnistyksen jälkeen, ilman nappuloiden painamista.
Nyt se ilmestyy, kun ohjelmassa on päästy client.show() riville.
PyQt on sotkettu asiaan mukaan kahdesta syystä
- esimerkki on riisuttu, Käyttöliittymää tarvitaan myöhemmin
- halu oppia miten PyQt toimii
Kaarme42
[code]import sys, time
from PyQt4 import QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class GuiPart(QDialog):
def init(self, rsPort, port, parent=None):
super(GuiPart, self).init(parent)
self.lueLabel = QLabel("Löytyykö tiedostoa")
self.feikkiButton = QPushButton("Feikki nappula")
self.barra = QtGui.QProgressBar()
self.barra.setMinimum(0)
self.barra.setMaximum(10)
grid = QGridLayout()
grid.addWidget(self.lueLabel, 1, 0)
grid.addWidget(self.barra, 1, 1)
grid.addWidget(self.feikkiButton, 2, 1)
self.connect(self.feikkiButton, SIGNAL("clicked()"), self.lue)
self.setWindowTitle("Viive luku")
self.setLayout(grid)
self.lue()
#-------------------------------------------------------------------------
def tiedosto(self):
time.sleep(1)
try:
kahva = open("tiedosto.txt","r", encoding="utf-8")
except:
kahva = False
return(kahva)
def lue(self):
a=0
self.barra.setValue(a)
for a in range(11):
xmldoc = self.tiedosto()
if xmldoc != False:
print("Oli")
break
else:
print("Ei ole")
xmldoc = None
self.barra.setValue(a)
root = QtGui.QApplication(sys.argv)
client = GuiPart(None, None)
client.show()
sys.exit(root.exec_()) [/code]