PyQT - Umwandlung .ui zu .py??

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
koellmania
User
Beiträge: 3
Registriert: Sonntag 20. April 2008, 00:50

Hi user!
bin neu hier im forum und bau zurzeit mit PyQT herum.
doch jetzt hab ich ein problem:

ich hab das tutorial von GalileoComputing durchgemacht und bin grad bei "24.3.2 Schreiben des Programms" auf der Seite http://galileocomputing.de/openbook/pyt ... 24_003.htm

mein verzeichnis: D:\Python25
meine Datei: test.ui

ich bin per konsole in diesem verzeichnis und ruf die datei wie folgt auf:
pyuic4 -o test.py test.ui

doch dann kommt: "Das System kann den angegebenen Pfad nicht finden"

Kann mir da jemand weiter helfen? Gibt es vlt. Alternativen dazu?
Vielen Dank im Voraus!

:)
koellmania
User
Beiträge: 3
Registriert: Sonntag 20. April 2008, 00:50

pls help me! :cry: 8)
BlackJack

Welcher Pfad kann denn nicht gefunden werden? Ist `pyuic4` denn installiert und im `%PATH%`!?
koellmania
User
Beiträge: 3
Registriert: Sonntag 20. April 2008, 00:50

D:\Python25\ und ja, es ist installiert.
Im PATH hab ich es nicht gefunden.
was muss ich da angeben?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Na natürlich den absoluten Pfad zu pyuic4!
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

Hi koellmania!

Ich bin neu in diesem Forum und habe Dein Problem daher erst jetzt gelesen. Auch ich kämpfe mich gerade durch dieses Buch. Hatte das selbe Problem bin aber dahinter gekommen, dass man den gesamten Pfad in der Eingabeaufforderung eingeben muss. Ich nehme an Dein Betriebssystem ist Windows.
Bei mir hat's so funktioniert:
PyQt4 ist installiert und befindet sich im Ordner Python25 als Unterordner.
Im Ordner PyQt4 befindet sich der Unterordner <bin> in diesem die Datei pyuic4.
Du hast die Datei test.ui erstellt und zum Beispiel direkt in den Ordner D:\Python25 gespeichert.
Nun starte die Eingabeaufforderung in Windows, klicke dazu Start-Alle Programme-Zubehör-Eingabeaufforderung.
Das Konsolenfenster öffnet sich.
Nun musst Du den genauen Pfad für alles eingeben z. B. so:
D:\Python25\PyQt4\bin\pyuic4 -o D:\Python25\test.py D:\Python25\test.ui
Beachte die Leerzeichen. Dann drücke die Taste <Enter>. Nun sollte sich die Datei test.py im Ordner D:\Python25 befinden.

Hoffe ich konnte Dir helfen
Gruß
flyingpy :)
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

hallo,

ich führe den thread mal weiter...

bei mir kommt - nachdme ich pobigem tipp gefolgt bin - die fehlermeldung "an unexpected error accoured ..."

was nun? alle pfade waren richtig :cry:

LG
lunar

Die exakte Kommandozeile posten, ebenso wie die vollständige und ungekürzte Fehlermeldung. Am besten kopierst du per Copy n' Paste den gesamten Text aus der Eingabeaufforderung. Wir können nicht erraten, was auf deinem PC nicht funktioniert ...
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

Code: Alles auswählen

C:\Users\Daniel>C:\Python25\PyQt4\bin\pyuic4 -o C:\Python25\anmeldung.py C:\Pyth
on25\anmeldung.ui
An unexpected error occurred.
Check that you are using the latest version of PyQt and send an error report to
support@riverbankcomputing.com, including the following information:

  * your version of PyQt (4.4.2)
  * the UI file that caused this error
  * the debug output of pyuic4 (use the -d flag when calling pyuic4)
das ist der code :)

LG
lunar

Was passiert, wenn du die Option -d hinzufügst, so wie in der Ausgabe beschrieben?
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

hallo
C:\Users\Daniel>C:\Python25\PyQt4\bin\pyuic4 -d C:\Python25\anmeldung.py C:\Python25\anmeldung.ui
Error: one input ui-file must be specified
seltsam, also der pfad stimmt mit sicherheit (habs überprüft)
lunar

Du solltest "-d" hinzufügen, nicht "-o" damit ersetzen. So, wie du pyuic4 gerade aufrufst, gibt es nämlich keine Ausgabedatei, sondern zwei Eingabedateien, eine Situation, die pyuic4 nicht vernünftig verarbeiten kann.

Code: Alles auswählen

C:\Users\Daniel>C:\Python25\PyQt4\bin\pyuic4 -d -o C:\Python25\anmeldung.py C:\Python25\anmeldung.ui
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

C:\Users\Daniel>C:\Python25\PyQt4\bin\pyuic4 -o C:\Python25\anmeldung.py C:
on25\anmeldung.ui -d
PyQt4.uic.uiparser: UI version is 4.0
PyQt4.uic.uiparser: uiname is Form
PyQt4.uic.uiparser: toplevel widget is QWidget
PyQt4.uic.properties: setting property geometry
PyQt4.uic.properties: setting property windowTitle
PyQt4.uic.uiparser: push QWidget Form
PyQt4.uic.properties: setting property geometry
PyQt4.uic.properties: setting property title
PyQt4.uic.uiparser: push QGroupBox groupBox
PyQt4.uic.properties: setting property geometry
PyQt4.uic.properties: setting property text
PyQt4.uic.uiparser: push QPushButton pushButton
PyQt4.uic.uiparser: pop widget QPushButton pushButton
PyQt4.uic.uiparser: new topwidget self.groupBox
PyQt4.uic.properties: setting property geometry
PyQt4.uic.uiparser: push QWidget verticalLayoutWidget
PyQt4.uic.uiparser: push QVBoxLayout verticalLayout
PyQt4.uic.properties: setting property text
PyQt4.uic.properties: setting property textFormat
PyQt4.uic.properties: AutoText
PyQt4.uic.properties: setting property alignment
PyQt4.uic.properties: AlignRight
PyQt4.uic.properties: AlignTop
PyQt4.uic.properties: AlignTrailing
PyQt4.uic.uiparser: push QLabel label
PyQt4.uic.uiparser: pop widget QLabel label
PyQt4.uic.uiparser: new topwidget self.verticalLayoutWidget
PyQt4.uic.properties: setting property text
PyQt4.uic.properties: setting property alignment
PyQt4.uic.properties: AlignRight
PyQt4.uic.properties: AlignTrailing
PyQt4.uic.properties: AlignVCenter
PyQt4.uic.uiparser: push QLabel label_2
PyQt4.uic.uiparser: pop widget QLabel label_2
PyQt4.uic.uiparser: new topwidget self.verticalLayoutWidget
PyQt4.uic.uiparser: pop layout QVBoxLayout verticalLayout
PyQt4.uic.uiparser: pop widget QWidget verticalLayoutWidget
PyQt4.uic.uiparser: new topwidget self.groupBox
PyQt4.uic.properties: setting property geometry
PyQt4.uic.uiparser: push QWidget verticalLayoutWidget_2
PyQt4.uic.uiparser: push QVBoxLayout verticalLayout_2
PyQt4.uic.uiparser: push QLineEdit lineEdit
PyQt4.uic.uiparser: pop widget QLineEdit lineEdit
PyQt4.uic.uiparser: new topwidget self.verticalLayoutWidget_2
PyQt4.uic.uiparser: push QLineEdit lineEdit_2
PyQt4.uic.uiparser: pop widget QLineEdit lineEdit_2
PyQt4.uic.uiparser: new topwidget self.verticalLayoutWidget_2
PyQt4.uic.uiparser: pop layout QVBoxLayout verticalLayout_2
PyQt4.uic.uiparser: pop widget QWidget verticalLayoutWidget_2
PyQt4.uic.uiparser: new topwidget self.groupBox
PyQt4.uic.uiparser: pop widget QGroupBox groupBox
PyQt4.uic.uiparser: new topwidget Form
PyQt4.uic.properties: setting property geometry
PyQt4.uic.properties: setting property backgroundBrush
Traceback (most recent call last):
File "C:\Python25\Lib\site-packages\PyQt4\uic\pyuic.py", line 73, in <mod
options.indent, options.pyqt3_wrapper)
File "C:\Python25\Lib\site-packages\PyQt4\uic\pyuic.py", line 28, in gene
i
uic.compileUi(uifname, pyfile, execute, indent, pyqt3_wrapper)
File "C:\Python25\lib\site-packages\PyQt4\uic\__init__.py", line 66, in c
eUi
winfo = compiler.UICompiler().compileUi(uifile, pyfile)
File "C:\Python25\lib\site-packages\PyQt4\uic\Compiler\compiler.py", line
in compileUi
w = self.parse(input_stream)
File "C:\Python25\lib\site-packages\PyQt4\uic\uiparser.py", line 572, in

actor(elem)
File "C:\Python25\lib\site-packages\PyQt4\uic\uiparser.py", line 431, in
eUserInterface
self.traverseWidgetTree(elem)
File "C:\Python25\lib\site-packages\PyQt4\uic\uiparser.py", line 409, in
rseWidgetTree
handler(self, child)
File "C:\Python25\lib\site-packages\PyQt4\uic\uiparser.py", line 155, in
eWidget
self.stack.push(self.setupObject(widgetClass(elem), parent, elem))
File "C:\Python25\lib\site-packages\PyQt4\uic\uiparser.py", line 131, in
Object
self.wprops.setProperties(obj, branch)
File "C:\Python25\lib\site-packages\PyQt4\uic\properties.py", line 293, i
Properties
propname[1:]))(self.convert(prop, widget))
File "C:\Python25\lib\site-packages\PyQt4\uic\properties.py", line 245, i
vert
raise UnsupportedPropertyError, prop[0].tag
UnsupportedPropertyError: brush
tja, diesmal lief es besser, nur im endeffekt auch scheiße :wink:
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

nee, hat doch geklappt :D

thx 8)

edit:

zu früh gefreut. Leider sind die labels nicht da. Also alles ist da, außer labels und beschriftungen von buttons z.B.

Hilfe :(
davalo
User
Beiträge: 6
Registriert: Mittwoch 6. August 2008, 18:51

weiß jemand, warum die Labels nicht auftauchen? Ich meine, wundern tut es mich nicht, dennw enn ich in die kompilierte .ui-datei schaue, sehe ich nirgends, dass den Labels eine text-eigesnchaft zugewiesen wird.

Wie mache ich das denn manuell?
label_2 ist das label.

ich habe evrsucht:

self.label_2.setText("Hallo")

aber das geht nicht :cry:
MB
User
Beiträge: 19
Registriert: Montag 5. Januar 2009, 15:07

Kann ich an dem Problem noch einmal mit einem eigenen Problen ansetzen. Ich habe ebenfalls nach dem GalileoBuch Kapitel 24 versucht, das Programm nachzubauen; beim Aufrufen dieses Programms kommt aber die Fehlermeldung ImportError: No module named hauptdialog. Die Hauptdialog.ui und py sind aber im gleichen Verzeichnis.

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_())
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Zum einen gibts hier im Forum Code tags um Code zu formatieren und zum anderen passt die Fehlermeldung nicht zum Code.
Wenn das Modul einen kleingeschriebenen Namen hat, dann solltest du ihn auch kleingeschrieben importieren. Wenn das nicht hilft solltest du uns entweder den richtigen Code oder den richtigen Traceback zeigen.
MB
User
Beiträge: 19
Registriert: Montag 5. Januar 2009, 15:07

OK, ich hoffe so ist es richtig. Die Groß/Kleinschreibung habe ich ausprobiert; die Fehlermeldung ist unabhängig davon.

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_())
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde da eher einen IndentationError erwarten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MB
User
Beiträge: 19
Registriert: Montag 5. Januar 2009, 15:07

So langsam lerne ich die richtige Formatierung hier im Forum. Also an der Indentation liegt es auch nicht. Bin für jeden Hinweis dankbar.

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_())
Antworten