Fehler beim Schließen der Fenster

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Hallo alle,
ich brauch mal wieder Hilfe bei zwei Problemen.
Das erste Problem äußert sich dadurch, dass beim Herunterfahren mein Ubuntu sich meldet, dass ein Programm noch läuft und ob trotzdem heruntergefahren werden soll. Dieses Fenster erscheint, obwohl ich alle Programme geschlossen habe. Nun bin ich darauf gekommen, dass es an meinem Programm liegt. Die Meldung erscheint aber nur wenn ich mein Programm durch das "x" (oben-rechts) schließe. Weiß jemand woran das liegt bzw. wie ich das Problem lösen kann?

Die zweite Frage hängt mit der ersten schon fasst zusammen, denn in der Meldung ist immer nur die Rede von einem "unbekannten Programm". Auch unter Windows hat das Programm im System wohl keine Bezeichnungen. Kann mir jemand sagen, wie ich für ein Programm den Namen, Autor... angeben kann? Ich hab in der SuFu gesucht, weiß aber nicht wonach ich suchen soll.

Liebe Grüße
lunar

Die Ursache für dieses Problem kann vielfältig sein. Ohne Quelltext kann man nichts dazu sagen.

Windows nutzt iirc die Metadaten der ausführbaren Datei zur Identifizierung. Damit Dein Programm nicht unbekannt ist, musst Du folglich eine ausführbare Datei mit korrekten Metadaten daraus erstellen. Wie Ubuntu Programme identifiziert, weiß ich nicht. Im Allgemeinen gibt es unter Linux keine Metadaten für ausführbare Dateien. Wahrscheinlich wird Ubuntu die Angaben in der Desktop-Datei des Programms machen. Damit Dein Programm unter Ubuntu nicht mehr unbekannt ist, musst Du eine Desktop-Datei erstellen, und ordentlich installieren.
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Könnte es vielleicht an der Art, weise liegen, wie ich die Oberfläche starte?

Der Code eines vereinfachten Programmes:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys, os, datetime, sqlite3

import database.database
from PyQt4 import QtGui, QtCore
from erinnerung import Ui_Dialog as Dlg

date_today = datetime.date.today() 

FILENAME = ('database.sdb3')
conn = sqlite3.connect(FILENAME)

class MeinDialog(QtGui.QDialog, Dlg): 
    def __init__(self): 
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)
        self.setWindowIcon(QtGui.QIcon('b3_icon.ico'))
        self.connect(self.button, QtCore.SIGNAL('clicked()'), self.start_vtb)
        


     app = QtGui.QApplication(sys.argv)
     dialog = MeinDialog() 
     dialog.show()
     sys.exit(app.exec_())
Eine Desktop-Datei habe ich auf jeden Fall erstellt - sie wird automatisch in folgendes Verzeichnis gespeichert:
/usr/share/applications

Liebe Grüße
lunar

@Trubinial Guru: Korrigiere erst einmal die Einrückung des Programms.
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Tud mir leid, den fehler hab ich gemacht, weil ich unwichtiges rausgenommen hab, damit es übersichtlich bleibt. Der lauffähige Code:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys, os, datetime, sqlite3

from PyQt4 import QtGui, QtCore
from erinnerung import Ui_Dialog as Dlg

class MeinDialog(QtGui.QDialog, Dlg): 
    def __init__(self): 
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)

app = QtGui.QApplication(sys.argv)
dialog = MeinDialog() 
dialog.show()
sys.exit(app.exec_())
Wenn ich das Fenster lösche wird folgendes zurückgegeben:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Jonathan\Desktop\sd.py", line 16, in <module>
    sys.exit(app.exec_())
SystemExit: 0
Hilft das?
lunar

Das ist kein Fehler, sondern die Ausnahme, die "sys.exit()" auslöst, um das Programm zu beenden. Normalerweise behandelt der Interpreter diese Ausnahme und beendet sich. Bei Dir allerdings wird die Ausnahme offenbar irgendwo abgefangen und ausgegeben. Deswegen beendet sich der Interpreter auch nicht.

Wie startest Du denn dieses Skript?
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Das Skript wird durch ein shell script (Befehl:python mein_skript.py), welches wiederum von einer desktop-Datei gestartet wurde, gestartet. Verständlich? =)
Das der Fehler kein Fehler ist, ist schonmal gut zu wissen! Vielen Dank!
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Genau das ist mein Fehler oder? Das ist misst dass die Desktop-Datei einem "zwischenscript" zugeordnet ist.

Das Problem mit dem herunterfahren habe ich wahrscheinlich schon anders gelöst. Undzwar war meine desktop-Datei nicht als ausführbar gekennzeichnet. Das habe ich schnell geändert und soweit ich das bis jetzt sehen kann, ist das Problem bis jetzt nicht nochmal aufgetaucht...
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Noch ein Nachtrag: Durch das ausführbar machen der desktop-Datei ist das Problem beim Herunterladen vollständig gelöst wurden.

Zu dem Problem mit den Namen des Programmes unter Windiows: Es gibt die möglichkeit in der setup.py Datei bei der Benutzung von py2exe Metadaten und so anzugeben.
Viel Glück allen mit dem gleichen Problem
Antworten