Hallo zusammen, ich bin relativ neu in der Programmierung und wollte mit Freunden ein größeres Projekt verwirklichen.
Dazu habe ich mir eric4 als IDE rausgesucht, weil das für größere Projekte gut sein soll.
Soweit so gut. Das Problem ist jetzt, wenn ich normalen Python Code ausführe klappt das wunderbar, nur wenn ich PySide-Code und QT-Code ausführe will (wie bei dem Tutorial von QT beschrieben) wird mir nichts angezeigt.
Muss ich etwas bestimmtes in den Einstellungen ändern oder fehlt mir ein Plugin (was ich nicht glaube...) oder klappt das mit eric4 einfach nicht? Sollte ja eigentlich ohne Probleme funktionieren, eric4 hat sogar QT integriert.
Oder wenn es einfache(re) Wege gibt sowas zu verwirklichen wäre ich auch für Hilfe sehr dankbar .
Ich hoffe mein Problem ist verständlich... Danke schonmal im Voraus.
MfG, Panix
QT mit eric4
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also "funktioniert nicht" ist nun mal keine gute Fehlerbeschreibung. Was sollen wir damit anfangen? Du musst detailliert beschreiben, was Du tust und was dann passiert. Ggf. die genaue Fehlermeldung kopieren und hier einfügen.
Funktioniert das Script denn, wenn Du es aus einer Shell manuell aufrufst?
Und welches Tutorial von Qt meinst Du? Denn Qt ist nativ eine Lib für C++ - d.h. da ist sicherlich nichts zum Ausführen unter Python beschrieben. Also solltest Du da exakt verlinken.
Generell halte ich es für keine gute Idee, sich sofort mit GUI-Programmierung zu befassen. Alleine, dass Du "eric4" als IDE gewählt hast, weil das "für größere Projekte gut sein soll" und "Qt (kleiner "t"!) integriert hat" spricht imho Bände für Deine Unerfahrenheit.
Man braucht in Python grundsätzlich nur einen guten Texteditor und kann damit schon ziemlich viel anstellen. Eine IDE wird erst dann sinnvoll, wenn man sie entweder schon gewohnt ist, oder die speziellen Tools auch zu nutzen weiß. Ansonsten bedeutet sie erst einmal viel Overhead beim Erlernen der Funktionalität, welches es für einen Einsteiger doppelt so komplex macht. Immerhin muss er sich ja vor allem auf die Sprache konzentrieren.
Also mein Rat wäre, sich erst einmal Python anzueignen und dann den Schritt in die GUI-Programmierung zu wagen.
Wenn Du da dennoch weitermachen willst, solltest Du Dich ein wenig von "erci4" lösen - zumindest, wenn Du hier im Forum über "Fehler" diskutieren willst. Denn so weit ich weiß nutzt hier keiner "eric4" und vor allem muss man klar zwischen Fehler in der IDE oder deren Benutzung und Fehlern im eigentlichen Python-Projekt trennen können.
Funktioniert das Script denn, wenn Du es aus einer Shell manuell aufrufst?
Und welches Tutorial von Qt meinst Du? Denn Qt ist nativ eine Lib für C++ - d.h. da ist sicherlich nichts zum Ausführen unter Python beschrieben. Also solltest Du da exakt verlinken.
Generell halte ich es für keine gute Idee, sich sofort mit GUI-Programmierung zu befassen. Alleine, dass Du "eric4" als IDE gewählt hast, weil das "für größere Projekte gut sein soll" und "Qt (kleiner "t"!) integriert hat" spricht imho Bände für Deine Unerfahrenheit.
Man braucht in Python grundsätzlich nur einen guten Texteditor und kann damit schon ziemlich viel anstellen. Eine IDE wird erst dann sinnvoll, wenn man sie entweder schon gewohnt ist, oder die speziellen Tools auch zu nutzen weiß. Ansonsten bedeutet sie erst einmal viel Overhead beim Erlernen der Funktionalität, welches es für einen Einsteiger doppelt so komplex macht. Immerhin muss er sich ja vor allem auf die Sprache konzentrieren.
Also mein Rat wäre, sich erst einmal Python anzueignen und dann den Schritt in die GUI-Programmierung zu wagen.
Wenn Du da dennoch weitermachen willst, solltest Du Dich ein wenig von "erci4" lösen - zumindest, wenn Du hier im Forum über "Fehler" diskutieren willst. Denn so weit ich weiß nutzt hier keiner "eric4" und vor allem muss man klar zwischen Fehler in der IDE oder deren Benutzung und Fehlern im eigentlichen Python-Projekt trennen können.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Also, die Datei heißt Hello.py un der Code:
Dann mit F2 und Enter usw. ausführen.
Code: Alles auswählen
#!/usr/bin/python
# Import PySide classes
import sys
from PySide.QtCore import *
from PySide.QtGui import *
# Create a Qt application
app = QApplication(sys.argv)
# Create a Label and show it
label = QLabel("Hello World")
label.show()
# Enter Qt application main loop
app.exec_()
sys.exit()
Ja, unerfahren bin ich natürlich noch. Davor habe ich IDLE benutzt, was ich eigentlich ganz gut fande. Da hat das ohne Probleme geklappt, da kam dann schön das kleine Fesnter neben der Shell und gut war (Außer dass wegen dem sys.exit am Ende auch ne Fehlermeldung kam, nach dem Schließen des Fensters:
)
Bei eric4 kam garnichts, aber ich hab auch keine Probleme damit IDLE zu benutzen, oder KWriter (was mir ein Freund empfohlen hat).
Ich mach das über die Seite hier: http://developer.qt.nokia.com/wiki/Hell ... _in_PySide
@ deets:
Ich mach das weniger von der Kommandozeile aus, lieber über IDLE...
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Python27/Hello", line 16, in <module>
sys.exit()
SystemExit
Bei eric4 kam garnichts, aber ich hab auch keine Probleme damit IDLE zu benutzen, oder KWriter (was mir ein Freund empfohlen hat).
Ich mach das über die Seite hier: http://developer.qt.nokia.com/wiki/Hell ... _in_PySide
@ deets:
Ich mach das weniger von der Kommandozeile aus, lieber über IDLE...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Starte das mal dennoch aus der Kommandozeile! Denn da kannst Du Seiteneffekte der IDE ausschließen.Panix91 hat geschrieben: Ich mach das weniger von der Kommandozeile aus, lieber über IDLE...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Panix91
Das du das gerne machst, ist ja schoen und gut. Aber erstmal muss man ausschliessen, dass es Seiteneffekte durch die IDE gibt.
Das du das gerne machst, ist ja schoen und gut. Aber erstmal muss man ausschliessen, dass es Seiteneffekte durch die IDE gibt.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wir meinten aber auch die "echte" OS-Shell; also unter Windows "cmd".Panix91 hat geschrieben:Ja klar, aber wie gesagt, wenn ich genau die selbe Datei über IDLE starte klappt es .
Dann ist eben etwas an "F2" nicht korrekt. Kannst Du damit denn andere Programme aus "eric4" starten? Du musst da ggf. noch mal die Doku von "eric4" konsultieren, ob es da evtl. etwas zu beachten gibt.
Wie schon gesagt, musst Du Dich jetzt mit einem Problem rumquälen, welches Du eigentlich nicht lösen müsstest, wenn Du auf die IDE oder zumindest dieses Feature der IDE verzichtetest.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Also, wenn derselbe Code in IDLE laeuft, aber nicht in Eric, dann hat Eric da ein problem. Da wuerde ich dir empfehlen, dich direkt an Detlev Offenbach zu wenden, der klaert das bestimmt.
Okay, ich denke das werde ich dann wohl mal tun... wenns später mal besser läuft mit dem Programmieren dann kann ich ja nochmal darauf zurückkommen . Von der Konsole aus geht es übrigens auch ohne Probleme (ich benutze openSuse)
Ist IDLE denn dafür gut geeignet? Wenigstens zeigt es mir da die Qt-Layouts an...
I-wie geht die Qt-Website auch grade nicht, sonst würde ich noch nen Code posten der bei mir nicht will. Falls jemand den Code aus dem Tutorial kennt mit dem Close-Button, wenn ich Close drücke, dannbringt er mir ne Fehlermeldung die ich grade nicht posten kann, weil ich den Code nicht habe...
Ist IDLE denn dafür gut geeignet? Wenigstens zeigt es mir da die Qt-Layouts an...
I-wie geht die Qt-Website auch grade nicht, sonst würde ich noch nen Code posten der bei mir nicht will. Falls jemand den Code aus dem Tutorial kennt mit dem Close-Button, wenn ich Close drücke, dannbringt er mir ne Fehlermeldung die ich grade nicht posten kann, weil ich den Code nicht habe...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also ich habe den Sinn von Idle nie verstanden - aber vielleicht bin ich da auch komisch.
Layouts erstellst Du doch eh mit dem QtDesigner - zumindest solltest Du das in Betracht ziehen.
Dann braucht es doch nur noch einen Editor und eine offene Shell und Du hast alles, was Dein Herz begehrt. Mit Alt+TAB mal schnell vom Editor in eine Shell wechseln und das Script zu starten¹ ist doch ein Klacks. Manche Editoren haben ja sogar eine Shell eingebaut...
¹ nach einmaliger Eingabe kommst Du dann ja sogar per "Pfeil nach Oben"-Taste dank der Bash-History sogar noch einfach dran.
Bei so einer Infrastruktur frage ich mich halt, was einem Idle da spezielles bringt?
Layouts erstellst Du doch eh mit dem QtDesigner - zumindest solltest Du das in Betracht ziehen.
Dann braucht es doch nur noch einen Editor und eine offene Shell und Du hast alles, was Dein Herz begehrt. Mit Alt+TAB mal schnell vom Editor in eine Shell wechseln und das Script zu starten¹ ist doch ein Klacks. Manche Editoren haben ja sogar eine Shell eingebaut...
¹ nach einmaliger Eingabe kommst Du dann ja sogar per "Pfeil nach Oben"-Taste dank der Bash-History sogar noch einfach dran.
Bei so einer Infrastruktur frage ich mich halt, was einem Idle da spezielles bringt?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ja klar, die Layouts erstelle ich so, aber ich weiss eben nicht wie ich da mit den Slots und Signalen arbeiten kann, ich muss einem drücken ja auch per "click()" eine Funktion zuweisen. Das Problem ist dann auch, dass ich dazu kein gescheites Tutorial finde. Man findet ein Tutorial in C++, oder wie man die einzelnen Widgets und Designer schön rumschiebt, bringt mir aber nichts.
Kannst du das vielleicht erklären oder mir ein gutes Tutorial zeigen?
Kannst du das vielleicht erklären oder mir ein gutes Tutorial zeigen?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das hat ja nun nichts mehr mit der eigentlichen Frage zu tun. Im übrigen kann man im QtDesigner Standard-Signale und -Slots bereits im Editor verbinden, z.B. im `QMainWindow` den `close`-Slot mit einem `triggered`-Signal einer selbstdefinierten `QAction`. Wenn man dann aus dem UI-File den Quellcode generiert, sieht man ja, wie Qt das zusammenfügt.Panix91 hat geschrieben: Kannst du das vielleicht erklären oder mir ein gutes Tutorial zeigen?
Grundsätzlich schau doch mal über die PySide-Seite. Da wird das eigentlich ganz gut erklärt. Zusätzlich kannst Du auch ins PyQt-Reference Handbook gucken. Dort wird das iirc auch gut erklärt (beachte aber die New-Style-Semantik).
Grundsätzlich gilt immer:
Code: Alles auswählen
object.signal.connect.slot
Für neue Fragen solltest Du aber in Zulunft einen neuen Thread aufmachen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert