den Betreff habe ich mit Absicht gewählt. Es funktioniert etwas nicht, aber Python spuckt keine Fehlermeldung aus. Nun, was habe ich vor? Ich möchte ein Bild mittels der QFileDialog in QLabel() laden. Hier der Quelltext des ausführbaren Programms:
Code: Alles auswählen
#!/usr/bin/env python
from PyQt4 import QtCore, QtGui
import os
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.load_pushButton = QtGui.QPushButton()
self.load_pushButton.setText("Load picture")
self.load_pushButton.clicked.connect(self.open_file_dialog)
self.image_label = QtGui.QLabel ()
h_layout = QtGui.QHBoxLayout()
h_layout.addWidget(self.load_pushButton)
h_layout.addWidget(self.image_label)
self.setLayout(h_layout)
def load_pic(self, img_path):
self.image_label.setPixmap(QtGui.QPixmap(""))
self.image_label.setPixmap(QtGui.QPixmap(img_path))
def open_file_dialog(self):
qfile_dialog_title = self.tr("Select picture")
file_path_pic = unicode(QtGui.QFileDialog.getOpenFileName(self, qfile_dialog_title,
os.path.expanduser(""),
"*.png *.jpg *.bmp"))
self.load_pic(file_path_pic)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Nun gehe ich einen Schritt weiter, und mache mit Py2Exe aus diesem Skript eine *.exe-Datei.
Hier mein kleines Setup-Skript:
Code: Alles auswählen
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
includes = ["sip", "PyQt4.QtNetwork", 'PyQt4.QtCore','PyQt4.QtGui', 'PyQt4.uic']
setup(
windows=['example_load_image.py'],
options={
"py2exe":{
"unbuffered": True,
"optimize": 2,
'includes': includes,
"excludes": ["email"]
}
}
)
Wieso klappt es, sobald man das Skript "normal" startet, also den Quelltext direkt startet. Aber sobald man mit py2exe daraus eine *.exe-Datei kreiert, dann klappt es nicht. Was habe ich übersehen?