Hi!
Wer kann dieses Problem lösen?
Ich arbeite mich gerade durch das E-Book "Python Das umfassende Handbuch" und hänge beim Kapitel "Grafische Benutzeroberflächen".
http://www.galileocomputing.de/openbook ... efdab7d505
Das Problem: Ein mit QtDesigner erstellter Dialog zur Benutzereingabe wurde als ui-Datei gespeichert und mit pyuic4 in eine Python-Klasse umgewandelt. Folgende Programmdatei wurde erstellt und soll den Dialog anzeigen:
import sys
from PyQt4 import QtGui
from hauptdialog import Ui_Hauptdialog 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_())
Die erforderliche Einrückungen im Originalscript sind korrekt wusste aber nicht wie ich sie hier anzeigen kann.
Nun mein Problem! Alles erdenkliche habe ich versucht aber es öffnet sich bei Aufruf der Programmdatei nur ein leeres Pythonfenster!?!
Umgebungsvariable PYTHONPATH ist gesetzt:
C:\Python25;C:\Python25\DLLs;C:\Python25\Lib;C:\Python25\Lib\encodings;C:\Python25\Lib\lib-tk
Das ist genau das Beispiel aus dem oben angeführten Buch, die Umgebungsvariable habe ich jedoch selber gesetzt.
Ersuche Euch um Hilfe, würde Python auch gerne beherrschen.
Danke im Voraus
flyingpy
PyQt - Aus Ui-Datei umgew. Pythonklasse Fenster leer
Die Qualität dieses Buches ist nicht gerade hoch. Eine Forumssuche verrät mehr.flyingpy hat geschrieben:Ich arbeite mich gerade durch das E-Book "Python Das umfassende Handbuch" und hänge beim Kapitel "Grafische Benutzeroberflächen".
Die Schaltfläche "Highlighted Code" samt neben stehender Combobox ist nicht zum Scherz daDie erforderliche Einrückungen im Originalscript sind korrekt wusste aber nicht wie ich sie hier anzeigen kann.
Python ist eine Programmiersprache, eine Programmiersprache hat keine Fenster. Was also soll ein "Pythonfenster" sein?Nun mein Problem! Alles erdenkliche habe ich versucht aber es öffnet sich bei Aufruf der Programmdatei nur ein leeres Pythonfenster!?!
Ist PyQt4 auch korrekt installiert? Was passiert, wenn du die Daten über die Konsole ausführst? Fehlermeldungen? Tracebacks?
[lunar hat folgendes geschrieben:]
Die Schaltfläche "Highlighted Code" samt neben stehender Combobox ist nicht zum Scherz da
und
[weiters schrieb lunar:]
Python ist eine Programmiersprache, eine Programmiersprache hat keine Fenster. Was also soll ein "Pythonfenster" sein?
Nun dazu folgendes:
Ich bin neu in diesem Forum und versuche mein Bestes um perfekt zu werden. Aber alle haben einmal bei Null angefangen, so ich auch gerade. Weiters habe ich nicht die Möglichkeit eine Ausbildung in all diesen Sachen zu erhalten und so habe ich mir mein bisheriges Wissen selber angeeignet!
Mit leerem Pythonfenster meine ich, es öffnet sich nach Aufruf der folgenden Programmdatei ein leeres Fenster welches, so nehme ich an, von der importierten Klasse QDialog erzeugt wird.
Ob PyQt4 korrekt installiert ist? Naja, ich habe von der Website des PyQt-Entwicklers unter
http://www.riverbankcomputing.com
das Komplettpaket, welches das Qt-Framework und die zugehörigen Python-Bindings enthält, heruntergeladen und installiert durch doppelklick auf die Datei
PyQt-Py2.5gpl-4.4.2-1.
Dann setzte ich noch die Umgebungsvariable PYQTDESIGNERPATH:
C:\Python25\PyQt4;C:\Python25\PyQt4\examples;C:\Python25\PyQt4\examples\widgets
Wenn ich die Daten über die Konsole ausführe kommen weder Fehlermeldungen noch Tracebacks.
Die Schaltfläche "Highlighted Code" samt neben stehender Combobox ist nicht zum Scherz da
und
[weiters schrieb lunar:]
Python ist eine Programmiersprache, eine Programmiersprache hat keine Fenster. Was also soll ein "Pythonfenster" sein?
Nun dazu folgendes:
Ich bin neu in diesem Forum und versuche mein Bestes um perfekt zu werden. Aber alle haben einmal bei Null angefangen, so ich auch gerade. Weiters habe ich nicht die Möglichkeit eine Ausbildung in all diesen Sachen zu erhalten und so habe ich mir mein bisheriges Wissen selber angeeignet!
Mit leerem Pythonfenster meine ich, es öffnet sich nach Aufruf der folgenden Programmdatei ein leeres Fenster welches, so nehme ich an, von der importierten Klasse QDialog erzeugt wird.
Code: Alles auswählen
import sys
from PyQt4 import QtGui
from hauptdialog import Ui_Hauptdialog 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_())
http://www.riverbankcomputing.com
das Komplettpaket, welches das Qt-Framework und die zugehörigen Python-Bindings enthält, heruntergeladen und installiert durch doppelklick auf die Datei
PyQt-Py2.5gpl-4.4.2-1.
Dann setzte ich noch die Umgebungsvariable PYQTDESIGNERPATH:
C:\Python25\PyQt4;C:\Python25\PyQt4\examples;C:\Python25\PyQt4\examples\widgets
Wenn ich die Daten über die Konsole ausführe kommen weder Fehlermeldungen noch Tracebacks.
Hast du mal in die generierte Datei geschaut, ob sie auch wirklich vollständig ist?Mit leerem Pythonfenster meine ich, es öffnet sich nach Aufruf der folgenden Programmdatei ein leeres Fenster welches, so nehme ich an, von der importierten Klasse QDialog erzeugt wird.
@flyingpy: Kenne mich mit PyQt nicht so aus, aber mir kommt etwas komisch vor, dass die `__init__()` von `Dlg` von Dir nicht aufgerufen wird!? Hat die Klasse keine `__init__()`-Methode?
Nein. Der einzige Zweck dieser Klasse ist es, "setupUi" bereitzustellen, sowie ein paar weitere Sache zwecks i10n. Die __init__ Methode wird nicht neu implementiert.BlackJack hat geschrieben:@flyingpy: Kenne mich mit PyQt nicht so aus, aber mir kommt etwas komisch vor, dass die `__init__()` von `Dlg` von Dir nicht aufgerufen wird!? Hat die Klasse keine `__init__()`-Methode?
lunar schrieb
Mit meinen eben noch nicht guten Pythonkenntnissen kann ich nicht wirklich sagen ob die generierte Datei vollständig ist, aber ich denke sie ist es.
Im folgenden die generierte Datei.
Wenn ich die Datei mit dem Befehl Run Module ausführe kommen weder Fehlermeldungen noch Tracebacks.
Hast du mal in die generierte Datei geschaut, ob sie auch wirklich vollständig ist?
Mit meinen eben noch nicht guten Pythonkenntnissen kann ich nicht wirklich sagen ob die generierte Datei vollständig ist, aber ich denke sie ist es.
Im folgenden die generierte Datei.
Code: Alles auswählen
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'C:\Python25\hauptdialogU1.ui'
#
# Created: Wed Jul 09 12:24:23 2008
# by: PyQt4 UI code generator 4.4.2
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_hauptdialogU1(object):
def setupUi(self, hauptdialogU1):
hauptdialogU1.setObjectName("hauptdialogU1")
hauptdialogU1.resize(400,503)
self.groupBox = QtGui.QGroupBox(hauptdialogU1)
self.groupBox.setGeometry(QtCore.QRect(20,10,361,331))
self.groupBox.setObjectName("groupBox")
self.widget = QtGui.QWidget(self.groupBox)
self.widget.setGeometry(QtCore.QRect(20,30,332,272))
self.widget.setObjectName("widget")
self.gridLayout = QtGui.QGridLayout(self.widget)
self.gridLayout.setObjectName("gridLayout")
self.label = QtGui.QLabel(self.widget)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label,0,0,1,1)
self.vornameU1 = QtGui.QLineEdit(self.widget)
self.vornameU1.setObjectName("vornameU1")
self.gridLayout.addWidget(self.vornameU1,0,1,1,2)
self.label_2 = QtGui.QLabel(self.widget)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2,1,0,1,1)
self.nachnameU1 = QtGui.QLineEdit(self.widget)
self.nachnameU1.setObjectName("nachnameU1")
self.gridLayout.addWidget(self.nachnameU1,1,1,1,2)
self.label_3 = QtGui.QLabel(self.widget)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3,2,0,1,1)
self.geburtsdatumU1 = QtGui.QDateEdit(self.widget)
self.geburtsdatumU1.setObjectName("geburtsdatumU1")
self.gridLayout.addWidget(self.geburtsdatumU1,2,1,1,1)
spacerItem = QtGui.QSpacerItem(98,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem,2,2,1,1)
self.label_4 = QtGui.QLabel(self.widget)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4,3,0,1,1)
self.adresseU1 = QtGui.QTextEdit(self.widget)
self.adresseU1.setObjectName("adresseU1")
self.gridLayout.addWidget(self.adresseU1,3,1,1,2)
self.buttOKU1 = QtGui.QPushButton(hauptdialogU1)
self.buttOKU1.setGeometry(QtCore.QRect(230,460,75,23))
font = QtGui.QFont()
font.setWeight(75)
font.setBold(True)
self.buttOKU1.setFont(font)
self.buttOKU1.setDefault(True)
self.buttOKU1.setObjectName("buttOKU1")
self.buttAbbrechenU1 = QtGui.QPushButton(hauptdialogU1)
self.buttAbbrechenU1.setGeometry(QtCore.QRect(310,460,75,23))
font = QtGui.QFont()
font.setWeight(75)
font.setBold(True)
self.buttAbbrechenU1.setFont(font)
self.buttAbbrechenU1.setObjectName("buttAbbrechenU1")
self.groupBox_2 = QtGui.QGroupBox(hauptdialogU1)
self.groupBox_2.setGeometry(QtCore.QRect(20,350,361,91))
self.groupBox_2.setObjectName("groupBox_2")
self.widget1 = QtGui.QWidget(self.groupBox_2)
self.widget1.setGeometry(QtCore.QRect(40,20,164,44))
self.widget1.setObjectName("widget1")
self.verticalLayout = QtGui.QVBoxLayout(self.widget1)
self.verticalLayout.setObjectName("verticalLayout")
self.agbU1 = QtGui.QCheckBox(self.widget1)
self.agbU1.setObjectName("agbU1")
self.verticalLayout.addWidget(self.agbU1)
self.newsletterU1 = QtGui.QCheckBox(self.widget1)
self.newsletterU1.setObjectName("newsletterU1")
self.verticalLayout.addWidget(self.newsletterU1)
self.retranslateUi(hauptdialogU1)
QtCore.QMetaObject.connectSlotsByName(hauptdialogU1)
hauptdialogU1.setTabOrder(self.vornameU1,self.nachnameU1)
hauptdialogU1.setTabOrder(self.nachnameU1,self.geburtsdatumU1)
hauptdialogU1.setTabOrder(self.geburtsdatumU1,self.adresseU1)
hauptdialogU1.setTabOrder(self.adresseU1,self.agbU1)
hauptdialogU1.setTabOrder(self.agbU1,self.newsletterU1)
hauptdialogU1.setTabOrder(self.newsletterU1,self.buttOKU1)
hauptdialogU1.setTabOrder(self.buttOKU1,self.buttAbbrechenU1)
def retranslateUi(self, hauptdialogU1):
hauptdialogU1.setWindowTitle(QtGui.QApplication.translate("hauptdialogU1", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox.setTitle(QtGui.QApplication.translate("hauptdialogU1", "GroupBox", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("hauptdialogU1", "Vorname", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("hauptdialogU1", "Nachname", None, QtGui.QApplication.UnicodeUTF8))
self.label_3.setText(QtGui.QApplication.translate("hauptdialogU1", "Geburtsdatum", None, QtGui.QApplication.UnicodeUTF8))
self.label_4.setText(QtGui.QApplication.translate("hauptdialogU1", "Adresse", None, QtGui.QApplication.UnicodeUTF8))
self.buttOKU1.setText(QtGui.QApplication.translate("hauptdialogU1", "OK", None, QtGui.QApplication.UnicodeUTF8))
self.buttAbbrechenU1.setText(QtGui.QApplication.translate("hauptdialogU1", "Abbrechen", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_2.setTitle(QtGui.QApplication.translate("hauptdialogU1", "GroupBox", None, QtGui.QApplication.UnicodeUTF8))
self.agbU1.setText(QtGui.QApplication.translate("hauptdialogU1", "AGBs gelesen und akzeptiert", None, QtGui.QApplication.UnicodeUTF8))
self.newsletterU1.setText(QtGui.QApplication.translate("hauptdialogU1", "Katalog bestellen", None, QtGui.QApplication.UnicodeUTF8))
Möchte noch erwähnen, dass ich die Datei bei meiner Übung hauptdialogU1 nannte und der Name des Formulars hauptdialogU1 ist und dies natürlich in der programmdatei auch berücksichtigt wurde.
Code: Alles auswählen
import sys
from PyQt4 import QtGui
from hauptdialogU1 import Ui_hauptdialogU1 as Dlg
class MeinDialog(QtGui.QDialog, Dlg):
def _init_(self):
QtGui._init_ (self)
self.setupUi(self)
app = QtGui.QApplication(sys.argv)
dialog = MeinDialog()
dialog.show()
sys.exit(app.exec_())