Hei
Kysymys PyQT ohjelman sammutuksesta.
Esimerkkikoodi toimii melkein halutulla tavalla. IDE:stä (Eric5) ajettuna ohjelma käynnistyy ja sammuu kymmenen sekunnin kuluttua, jos sitä ennen ei paineta sammutusnappulaa. Painettaessa nappulaa ohjelma sammuu heti.
Windows Task Managerin välilehdellä Applications näkyy ohjelman käynnistyminen ja sammuminen. Välilehdellä Processes niitä ei näy.
Kun ohjelmasta tekee ajettavan “paketin” CXfreeze ohjelmalla
cxfreeze sammutus.pyw --base-name=Win32GUI --target-dir paketti
(HUOM --base-name=Win32GUI siis ei dos ikkunaa)
Task Managerin Application välilehdellä näkyy ohjelman käynnistyminen ja sammuminen. Sen lisäksi Processes välilehdellä näkyy ohjelman käynnistyminen, mutta prosessi ei sammu, kun ohjelma sammuu Application puolella. Zombi prosessi?
Käynnistettäessä ohjelma uudelleen syntyy toinen prosessi.
Siis miten koodia on korjattava, jotta sen prosessi sammuu viimeistään wait ajan loputtua.
(Kysymys liittyy aikaisempaan kysymykseen PyQT ja ikkunan näkyminen)
[code]from PyQt4 import QtGui
from PyQt4.QtGui import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtTest import QTest
import sys
class GuiPart(QDialog):
def init(self, parent=None):
super(GuiPart, self).init(parent)
self.koeButton = QPushButton(“Paina”)
self.connect(self.koeButton, SIGNAL(“clicked()”), self.nappula)
self.grid = QGridLayout()
self.grid.addWidget(self.koeButton, 2, 0 )
self.setLayout(self.grid)
self.setWindowTitle("Tutki sammutusta")
def nappula(self):
self.close()
def koeFunktio(self):
QTest.qWait(10000)
self.close()
-------------------------------------------------------------------------
root = QtGui.QApplication(sys.argv)
client = GuiPart(None)
client.show()
client.koeFunktio()
sys.exit(root.exec_())[/code]