Probleme mit PyQT, Python und Shell-commands [Anfänger]
@gurulux: Von den Tutorials scheint nicht viel hängen geblieben zu sein, wenn Du versuchst den ``&``-Operator auf Zeichenketten anzuwenden. Quelltext in einer bekannten Sprache zu schreiben, und hoffen, dass die neu zu erlernende Sprache den genau so behandelt, ist nicht die beste Art eine neue Sprache zu lernen.
@alle:
Möchte doch mal kurz daran erinnern, dass wir alle mal Anfänger in Sachen Python/Qt waren und immernoch dazulernen. Keine Ahnung warum, aber der Rat 'uhm bleib doch lieber bei Deinen Leisten' kommt in letzter Zeit öfters. Ich weiss nicht, wie viele von uns das seinerzeit motiviert hätte, am Python-Ball zu bleiben...
Möchte doch mal kurz daran erinnern, dass wir alle mal Anfänger in Sachen Python/Qt waren und immernoch dazulernen. Keine Ahnung warum, aber der Rat 'uhm bleib doch lieber bei Deinen Leisten' kommt in letzter Zeit öfters. Ich weiss nicht, wie viele von uns das seinerzeit motiviert hätte, am Python-Ball zu bleiben...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Moment! Der Rat lautete doch nur, "wenn Du nicht bereit bist, neues zu lernen, dann bleibe bei Deinen Leisten!". Diese Einschränkung macht den kleinen aber feinen Unterschied zwischen herablassender Ablehnung und gut gemeintem Ratschlag.jerch hat geschrieben:@alle:
Keine Ahnung warum, aber der Rat 'uhm bleib doch lieber bei Deinen Leisten' kommt in letzter Zeit öfters. Ich weiss nicht, wie viele von uns das seinerzeit motiviert hätte, am Python-Ball zu bleiben...
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
Guten Tag allerseits,
um mal etwas Beruhigung in das Thema zu bringen:
1. Ich werde meine Anstrengungen in der Richtung Python NICHT einstellen
2. Ich werde mir für die Zukunft GENAU überlegen, WO und WEN ich um Hilfe frage
3. Mit genug Alter und Erfahrung in Ausbildung mir anvertrauter junger Menschen,
denke ich nicht, dass ich mir auf eine ehrliche Frage mit Angaben zur Situation,
derart unverschämte Antworten als EINSTEIGER zumuten muss.
4. WENN ich HIER nochmals um Hilfe fragen werde, dann werde ich sicher zuvor
in Fremdsprachlichen Foren forschen, da dort normal SEHR VIEL milder mit Einsteigern
umgegangen wird.
5. Bitte zerstreitet EUCH NICHT meinetwegen, ein EINZELNER Einsteiger ist DAS
NICHT WERT ! !
--------------------------------------
Da ich ja nun die Nacht zeit hatte zum Lesen und übersetzen, habe ich aus dem
"Silbertablett" von lunar entnommen, dass es besser ist, eine Art "Starter-Script"
für die Qt- erstellte GUI zu erstellen. Dass ich den Aufruf des enstprechenden Shell-Scripts
zuvor aus Strings zusammenfügen muss, um ihn dann an die Function os.system() zu
übegeben, habe ich auch verstanden. Allerdings hilft mir das in keiner Weise weiter, um zu erkennen
wie ich bei einem gedrückten Button einen vorgegebenen Text erhalte, den ich dann im Pfad-String
verarbeiten kann.
Da ich KEINE andere, als Mausaktionen mit meinem geplanten "Script" erzeugen möchte,
komme ich also an dieser Stelle mit einer CLI- Anwendung nicht zum Ziel.
Dies nur als weitere Info für die Leute, die mir bisher Hinweise gaben.
UND:
ICH BITTE AUDRÜCKLICH darum, auf diesen Thread-Eintrag
KEINE WEITEREN HINWEISE zum erreichen meiner Ziele AUFZUFÜHREN ! !
Es ist mir nun Sehr daran gelegen, mir diese selbst zu erarbeiten, auch wenn
ich diesen Thread weiter lesen werde, sowie viele andere Threads hier im Forum.
Euch ALLEN eine schönen Sonntag,
gu.lux
um mal etwas Beruhigung in das Thema zu bringen:
1. Ich werde meine Anstrengungen in der Richtung Python NICHT einstellen
2. Ich werde mir für die Zukunft GENAU überlegen, WO und WEN ich um Hilfe frage
3. Mit genug Alter und Erfahrung in Ausbildung mir anvertrauter junger Menschen,
denke ich nicht, dass ich mir auf eine ehrliche Frage mit Angaben zur Situation,
derart unverschämte Antworten als EINSTEIGER zumuten muss.
4. WENN ich HIER nochmals um Hilfe fragen werde, dann werde ich sicher zuvor
in Fremdsprachlichen Foren forschen, da dort normal SEHR VIEL milder mit Einsteigern
umgegangen wird.
5. Bitte zerstreitet EUCH NICHT meinetwegen, ein EINZELNER Einsteiger ist DAS
NICHT WERT ! !
--------------------------------------
Da ich ja nun die Nacht zeit hatte zum Lesen und übersetzen, habe ich aus dem
"Silbertablett" von lunar entnommen, dass es besser ist, eine Art "Starter-Script"
für die Qt- erstellte GUI zu erstellen. Dass ich den Aufruf des enstprechenden Shell-Scripts
zuvor aus Strings zusammenfügen muss, um ihn dann an die Function os.system() zu
übegeben, habe ich auch verstanden. Allerdings hilft mir das in keiner Weise weiter, um zu erkennen
wie ich bei einem gedrückten Button einen vorgegebenen Text erhalte, den ich dann im Pfad-String
verarbeiten kann.
Da ich KEINE andere, als Mausaktionen mit meinem geplanten "Script" erzeugen möchte,
komme ich also an dieser Stelle mit einer CLI- Anwendung nicht zum Ziel.
Dies nur als weitere Info für die Leute, die mir bisher Hinweise gaben.
UND:
ICH BITTE AUDRÜCKLICH darum, auf diesen Thread-Eintrag
KEINE WEITEREN HINWEISE zum erreichen meiner Ziele AUFZUFÜHREN ! !
Es ist mir nun Sehr daran gelegen, mir diese selbst zu erarbeiten, auch wenn
ich diesen Thread weiter lesen werde, sowie viele andere Threads hier im Forum.
Euch ALLEN eine schönen Sonntag,
gu.lux
... Ansichten:
Wozu braucht man dann noch 'pyuic4 -x' ?
dem, was es dazu gibt. Aber ziehe leider immer noch Vergleiche. Mit VB wäre ich längst
fertig, aber eben Win**** gebunden.
dann um die bekanntesten Möglichkeiten dafür belesen. Doch, ich bin schon bereit mich auf Veränderungen einzulassen.
OK, vielleicht will ich zu viel auf einmal....akzeptiert.
Gruss
gu.lux
@MOD/ADMIN: CLOSE PLEASE
Gerechtfertigt, akzeptiert...Hyperion hat geschrieben: Ja, Du willst zu viel auf einmal!
Einzusehen, allerdings als ERSTANWORT, FALSCHER TON ! (gewollte De-Motivation?)Hyperion hat geschrieben:Lerne doch erst einmal die Grundlagen von Python und lass die Finger von GUIs!
Wird nirgends derart klar propagiert, aber verstanden und akzeptiert.Hyperion hat geschrieben:Wenn Du ein einigermaßen sinnvolles Tutorial zu PyQt gelesen hättest, wüsstest Du, dass man keinen Code in eine generierte Ui-Klassendatei schreibt
Wozu braucht man dann noch 'pyuic4 -x' ?
Mein Fehler, zu 100% akzeptiert. Kann hier BITTE ein MOD, oder ADMIN entsprechend verschieben ?Hyperion hat geschrieben: Hinzu kommt, dass wir ein spezielles Forum zu PyQt / PySide haben - ok, Du bist neu hier und musst Dich erst einmal orientieren, aber irgend wie zeigt mir das, dass Du zu ungeduldig und zu schnell an die Dinge rangehst.
Gaanz einfach: Befasse mich seit Monaten nur noch mit meiner 10.04LTS-Installation undHyperion hat geschrieben:Was hat Deine Problematik mit dem verwendeten OS zu tun? *wunder*gurulux hat geschrieben: Also bleibe ich beseer dabei und Win****.
dem, was es dazu gibt. Aber ziehe leider immer noch Vergleiche. Mit VB wäre ich längst
fertig, aber eben Win**** gebunden.
Sollte ich nicht auf Veränderungen eingestellt sein, hätte ich wohl nicht erst ein weiteres OS installiert und michsnafu hat geschrieben:Sofern du keine Lust hast auf große Veränderungen, ist das wahrscheinlich wirklich die beste Idee. Eine neue Programmiersprache lernt man bekanntlich nicht in einer Woche. Mal davon ab, dass du quasi 2 Sprachen lernen musst: Qt und Python.gurulux hat geschrieben:ich bin halt noch VB2005 gewohnt.
Also bleibe ich besser dabei und Win****.
dann um die bekanntesten Möglichkeiten dafür belesen. Doch, ich bin schon bereit mich auf Veränderungen einzulassen.
OK, vielleicht will ich zu viel auf einmal....akzeptiert.
Freut mich zu lernen, dass Dir am Anfang keine Fehler unterlaufen sindBlackJack hat geschrieben:@gurulux: Von den Tutorials scheint nicht viel hängen geblieben zu sein, wenn Du versuchst den ``&``-Operator auf Zeichenketten anzuwenden.
Quelltext in einer bekannten Sprache zu schreiben, und hoffen, dass die neu zu erlernende Sprache den genau so behandelt,
ist nicht die beste Art eine neue Sprache zu lernen.
Gruss
gu.lux
@MOD/ADMIN: CLOSE PLEASE
Ich befürchte Foren sind nicht ganz deine Sache. Und nein, demotivieren will dich hier keiner, alles ist als ernster Ratschlag gemeint. Wenn du im Umgang mit GUIs erhebliche Probleme hast, die auf mangelndes Verständnis von Pythons Grundlagen schließen lassen, ist wohl offensichtlich, dass du besser besagte Grundlagen erlernst bevor es weitergeht. Das direkt richtig zu formulieren spart Worte und Zeit. Mag sein, dass deswegen die Community hier als "hart und rücksichtlos" rüberkommt, aber es bringt einem mehr bei als wenn stattdessen Vorschläge kommen, die nur die Symptome statt der Ursache der Probleme (was meist schlechter Stil oder falscher Ansatz sind) behandeln.gurulux hat geschrieben:@MOD/ADMIN: CLOSE PLEASE
Threads werden übrigens für gewöhnlich nur bei großen Friedensstörern geschlossen oder gelöscht.
Der Hinweis ist aber durchaus gerechtfertigt. Jede Sprache unterscheidet sich in diversen Teilgebieten von der anderen. Du kannst nicht davon ausgehen, dass sich Sprache A bei einer gleichlautenden Eingabe immer genau so verhält wie Sprache B. Zu diesem Aspekt gehört auch, dass du die Syntax einer neuen Sprache u.U. von grundauf neu lernen (oder zumindest: "hinterfragen") musst. Als prominentes Beispiel sei hier mal der Modulo-Operator genannt, der bei negativen Zahlen in Java ganz andere Ergebnisse ausgibt als in Python, weil er eben intern anders implementiert ist. Damit ist sicherlich auch schon der eine oder andere Umsteiger auf die Nase gefallen bzw hatte ein gewisses Aha-Erlebnis. Solche Sachen zu bedenken, gehört halt einfach dazu. Und das ist jetzt bitte nicht als Belehrungsversuch eines Jungspundes (eine Interpretation, die bei Leuten älteren Semesters leider sehr häufig begangen wird), sondern einfach als gut gemeinter Ratschlag zu verstehen.gurulux hat geschrieben:Freut mich zu lernen, dass Dir am Anfang keine Fehler unterlaufen sindBlackJack hat geschrieben:@gurulux: Von den Tutorials scheint nicht viel hängen geblieben zu sein, wenn Du versuchst den ``&``-Operator auf Zeichenketten anzuwenden.
Quelltext in einer bekannten Sprache zu schreiben, und hoffen, dass die neu zu erlernende Sprache den genau so behandelt,
ist nicht die beste Art eine neue Sprache zu lernen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Sorry, das ist doch Unsinn! Zum einen gibst Du hier das ganze verkürzt wieder - ich hatte zu einer genaueren, ausführlicheren Darstellung einen Link zu einem Blog-Artikel gepostet. Wieso sollte ich das alles noch selber genauer ausführen? Zum anderen suggeriere ich doch hier nicht, dass Du die Finger von Python lassen sollst; ganz im Gegenteil sind eben Frustrationen vorprogrammiert, wenn man an Probleme und Fehler stößt, die man sich ohne die Kenntnisse der Grundlagen nicht erklären kann. Du kannst hier im Forum auch gerne mal diverse Threads durchsuchen, in denen wir immer wieder Anfängern davon abraten, sich direkt zu Beginn mit GUIs zu befassen.gurulux hat geschrieben:Einzusehen, allerdings als ERSTANWORT, FALSCHER TON ! (gewollte De-Motivation?)Hyperion hat geschrieben:Lerne doch erst einmal die Grundlagen von Python und lass die Finger von GUIs!
Aber ich bin gerne bereit Kritik anzunehmen und bitte Dich daher, einfach mal selber eine bessere Antwort zu formulieren. Also: Schreib doch mal meine Ansicht auf Deine Art und Weise, die Dir als nicht demotivierend erscheint auf.
Naja, der QtDesigner speichert das UI-Design in einem XML-Dialekt. Aus diesem musst Du ja noch irgend wie die notwendigen Python-Klassen generieren. Alternativ gibt es bei PyQt noch das `uic`-Modul. Dieses generiert die UI-Klassen dynamisch während der Laufzeit. Damit brauchst Du das Tool zum Wandeln nicht mehr. (PySide fehlt so ein dynamisches Laden noch - einziges Manko meiner Meinung nach).gurulux hat geschrieben:Wird nirgends derart klar propagiert, aber verstanden und akzeptiert.Hyperion hat geschrieben:Wenn Du ein einigermaßen sinnvolles Tutorial zu PyQt gelesen hättest, wüsstest Du, dass man keinen Code in eine generierte Ui-Klassendatei schreibt
Wozu braucht man dann noch 'pyuic4 -x' ?
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
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@gurulux: Eins würde mich noch interessieren - du erwähnst mehrfach dein Alter. Wie alt bis du denn bzw. im welchem Alterbereich liegst du?
Gruß, noisefloor
@gurulux: Eins würde mich noch interessieren - du erwähnst mehrfach dein Alter. Wie alt bis du denn bzw. im welchem Alterbereich liegst du?
Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Er schrieb doch, dass er die "5" vorne hat. Also 50 < alter < 60noisefloor hat geschrieben: @gurulux: Eins würde mich noch interessieren - du erwähnst mehrfach dein Alter. Wie alt bis du denn bzw. im welchem Alterbereich liegst du?
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
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Ups, überlesen, sorry.Er schrieb doch, dass er die "5" vorne hat. Also 50 < alter < 60
Wenn's Hex-Basis ist, dass ist es _wirklich_ ein stolzes AlterBlackJack hat geschrieben:Es stand keine Basis dabei.
Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Pedantnomnom hat geschrieben:Eher: 50 ≤ alter < 60Hyperion hat geschrieben:Er schrieb doch, dass er die "5" vorne hat. Also 50 < alter < 60
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
Hallo zusammen,
mein Alter, ooh... 54, sorry,
hätte ich schonmal angeben sollen..
Mittlerweile habe ich es nun fertigbekommen.
Danke nochmal an alle Tipp-Geber, ist nun
auf die anständige Weise mittels "Wrapper"
erstellt.
Hat einige Zeit und viel lesen in Anspruch
genommen, aber dann bin ich i-wann bei
lambda: ausgekommen. Auch partial hatte
mich schon zum Ziel gebracht, aber mit
lambda konnte man sich zusätzlichhes import
ersparen und von daher weniger Code zum
Abarbeiten verursachen.
Schönen Tag noch,
Gruß
gu.lux
mein Alter, ooh... 54, sorry,
hätte ich schonmal angeben sollen..
Mittlerweile habe ich es nun fertigbekommen.
Danke nochmal an alle Tipp-Geber, ist nun
auf die anständige Weise mittels "Wrapper"
erstellt.
Hat einige Zeit und viel lesen in Anspruch
genommen, aber dann bin ich i-wann bei
lambda: ausgekommen. Auch partial hatte
mich schon zum Ziel gebracht, aber mit
lambda konnte man sich zusätzlichhes import
ersparen und von daher weniger Code zum
Abarbeiten verursachen.
Schönen Tag noch,
Gruß
gu.lux
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Sofern Du `lambda` als Mini-Slot-Funktion direkt im Binding von SIGNAL zu SLOT verwendest, sei gewarnt. Iirc kann so etwas zu Problemen führen bei PyQt.. ich meine dazu mal etwas gelesen zu haben. Vielleicht kann lunar da für Aufklärung sorgen?
Also etwa bei Konstrukten wie diesem hier:
Also etwa bei Konstrukten wie diesem hier:
Code: Alles auswählen
self.ui.textfield.textChanged.connect(lambda text: something)
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
Im moment sieht es so aus:
in einem Tuppel sind die strings für die funktion buttonhot() hinterlegt. Somit muss ich nur eine funktion
für alle Tasten haben, da je nach gedrückter Taste der passende String abgeliefert wird und dann in einem
String mit dem Rest der Pfadangabe zusammen gesetzt wird. Das Resultat wird dann an os.system()
übergeben und auch so ausführt, wie ich es möchte.
Da ich keine IR-Fernbedienungen nutze, habe ich bisher keine beinträchtingungen erkannt.
Aber danke für den Hinweis, sollte es zu Problemen kommen, werde ich mich gern daran
erinnern.
gruss
gu.lux
Code: Alles auswählen
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), lambda: buttonhot(9))
QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL("clicked()"), lambda: buttonhot(10))
für alle Tasten haben, da je nach gedrückter Taste der passende String abgeliefert wird und dann in einem
String mit dem Rest der Pfadangabe zusammen gesetzt wird. Das Resultat wird dann an os.system()
übergeben und auch so ausführt, wie ich es möchte.
Da ich keine IR-Fernbedienungen nutze, habe ich bisher keine beinträchtingungen erkannt.
Aber danke für den Hinweis, sollte es zu Problemen kommen, werde ich mich gern daran
erinnern.
gruss
gu.lux
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du solltest Dir die neue Semantik von "connect" angewöhnen:
Die ist viel besser zu lesen und zudem zukunftssicherer.
Eigentlich gibt es genau dafür `partial` - der import würde mir da keine Sorgen machen.
Anstelle von `os.system` würde ich Dir zudem das `subprocess`-Modul vorschlagen
Code: Alles auswählen
# alt
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), lambda: buttonhot(9))
# neu
self.ui.pushButton.clicked.connect(lambda: buttonhot(9))
Eigentlich gibt es genau dafür `partial` - der import würde mir da keine Sorgen machen.
Anstelle von `os.system` würde ich Dir zudem das `subprocess`-Modul vorschlagen
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
Hallo Hyperion,
werde ich sicher probieren, habe mich hierbei jedoch in der Hauptsache an die Doku`s zu PyQt
in den versch. Sprachen gehalten, ebenso wie an entsprechen gefundene Tutorials.
Aber man kann ja immer dazu lernen
Das mit Subprocess hatte ich auch gelesen, war mir aber für mein Gefühl zu viel, da
ich nicht vorhabe, "returns" aus dem Prozess abzufragen oder zu verwerten. Nichts desto
Trotz, werde ich mir auch dazu die Doku nochmal genauer ansehn.
werde ich sicher probieren, habe mich hierbei jedoch in der Hauptsache an die Doku`s zu PyQt
in den versch. Sprachen gehalten, ebenso wie an entsprechen gefundene Tutorials.
Aber man kann ja immer dazu lernen
Das mit Subprocess hatte ich auch gelesen, war mir aber für mein Gefühl zu viel, da
ich nicht vorhabe, "returns" aus dem Prozess abzufragen oder zu verwerten. Nichts desto
Trotz, werde ich mir auch dazu die Doku nochmal genauer ansehn.