Seite 1 von 2

raw_input

Verfasst: Mittwoch 15. Februar 2012, 12:33
von dodo
Guten Tag,
ich möchte ein Programm mit Python schreiben, und habe keine Lust Grafik einzubinden, da das für den Zweck nicht nötig ist.
Ich habe in dem Programm 2 Threads (beide mit einer unendlichen while-Schleife), der eine verlangt eine Eingabe, und gibt Dinge aus. Der andere Thread überprüft nur bestimmte Dateien, aber dieser Thread soll eine Ausgabe tätigen, wenn etwas geschehen ist.
Doch dieser Thread kann keine Ausgabe tätigen, da die Ausgabe blockiert wird.
Das Hauptprogramm kann auch keine Ausgabe tätigen.
Nur der Eingabe-Thread kann eine Ausgabe tätigen, und eine Eingabe verlangen. Da dieser Thread aber eine raw_input beinhaltet, müsste ich diese abbrechen, den Thread beenden, und den anderen Thread seine Ausgabe tätigen lassen.
Dabei sollte das, was in dem raw_input schon eingegeben wurde, nicht verloren gehen, und derselbe Teil der Schleife soll wieder starten. An sich ist das kein Problem. Es gibt aber 3 Probleme:
1.raw_input() abbrechen
2.bisherige Eingabe in raw_input() in einer Variable speichern
3.Schleife an der selben Stelle neu starten(Das ist das kleinste Problem).

Es wäre schön, wenn mir jemand helfen könnte, das Problem zu lösen. Vielleicht gibt es ja eine andere Möglichkeit, die Ausgabe des einen Threads zu tätigen? Aber am besten sollten alle Ausgaben und Eingaben im selben Fenster stattfinden.

Danke schon einmal im Voraus.

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 14:01
von lunar
@dodo: Parallele Ein- und Ausgabe lässt sich nur mit getrennten Bildschirmbereichen vernünftig umsetzen, so wie man das beispielsweise aus Chat-Programmen kennt. Alles andere ist kompliziert, fehleranfällig und für den Nutzer nur verwirrend. Du brauchst mithin eine Oberfläche, die über "raw_input()" hinausgeht. Auf der Konsole kannst Du beispielsweise urwid verwenden.

Alternativ kannst Du die Ausgaben auch einfach in eine Datei schreiben, die sich der Nutzer bei Bedarf dann ansehen kann. Das wäre die einfachste Lösung.

Btw, wäre es zu viel verlangt, einen Avatar ohne Animation zu verwenden?

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 15:53
von Dav1d
@lunar, Den habe ich mit Hilfe meines Ad-Blockers entfernt.

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 16:00
von lunar
@Dav1d: Nun ja, ich finde, man kann ja wenigstens höflich darauf hinweisen, dass dieses Dinge unsäglich lästig ist :)

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 16:32
von deets
lunar hat geschrieben: Btw, wäre es zu viel verlangt, einen Avatar ohne Animation zu verwenden?
Du sprichst mir aus der Seele... Dancing Hamsters, anybody?

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 16:49
von webspider
Evtl. könnte es ja ein generelles Verbot von animierten Avataren in die Forenregeln schaffen.

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 17:09
von lunar
@webspider: +1

Wobei der OP der Einzige ist, der hier einen animierten Avatar hat. Solange das nicht überhand nimmt, muss ja nicht gleich ein Verbot her, vor allem, wenn der OP der freundlichen Aufforderung, einen anständigen Avatar zu nehmen, folgt :)

Re: raw_input

Verfasst: Mittwoch 15. Februar 2012, 18:33
von webspider
In der Tat. Zumindest ich kenne recht wenige Foren, in denen einerseits animierte Avatare (und/oder Signaturen) erlaubt sind und andererseits es ein Großteil der Nutzer auch schafft diese professionell genug zu gestalten, damit sie einem nicht auf den Nerv gehen.

Ich befürchte dieses Forum wird leider nicht dazu gehören, allein schon weil ein Großteil der Nutzer Neulinge sind, die lediglich Antworten auf ein, zwei Fragen suchen. Von daher halte ich ein vorbeugendes Verbot durchaus für sinnvoll.

Re: raw_input

Verfasst: Donnerstag 16. Februar 2012, 10:53
von dodo
Dürfte ich freundlich darauf hinweisen, dass ich meine Frage(n) nicht deshalb gestellt habe, um keine vernünftige Antwort zu bekommen, oder gar wegen meinem Avatar beschimpft zu werden; Ich habe die Frage deshalb gestellt, weil ich eine vernünftige Antwort wollte.
lunar hat geschrieben:@dodo: Parallele Ein- und Ausgabe lässt sich nur mit getrennten Bildschirmbereichen vernünftig umsetzen, so wie man das beispielsweise aus Chat-Programmen kennt. Alles andere ist kompliziert, fehleranfällig und für den Nutzer nur verwirrend. Du brauchst mithin eine Oberfläche, die über "raw_input()" hinausgeht. Auf der Konsole kannst Du beispielsweise urwid verwenden.
urwid? Was soll das sein?

Ich habe so das Gefühl, dass das ganze im Terminal zu nichts führt...
Vielleicht sollte ich ja wegen der "Ein-Fenster-Ausgabe" doch z.B. pygame einbauen...
Wenn der wenigstens mit der Thread-Sache klarkommt :K ...
lunar hat geschrieben:Alternativ kannst Du die Ausgaben auch einfach in eine Datei schreiben, die sich der Nutzer bei Bedarf dann ansehen kann. Das wäre die einfachste Lösung.
Nee, das soll eine Meldung sein, die den Benutzer auf etwas hinweist, und zwar nicht erst dann, wenn er bemerkt, dass er im Programmordner eine .txt öffnen kann - Und der Benutzer würde sicher denken, das die .txt zum Programm gehört, und nichts sinnvolles enthält - Nein danke.

Re: raw_input

Verfasst: Donnerstag 16. Februar 2012, 11:02
von BlackJack
@dodo: Du hast neben vernünftiger Antwort einen Hinweis auf den Avatar bekommen. Wie Du siehst finden das mehrere Leute nervig. Die Folge von so etwas ist nicht nur, dass es angesprochen wird, sondern das Leute Dich einfach komplett deswegen ignorieren können, obwohl sie zu der eigentlichen Frage eine Antwort beitragen könnten.

`urwid`: http://duckduckgo.com/?q=urwid

Statt `pygame` wo Du erst noch so etwas wie ein Textfeld selber programmieren müsstest, würde sich vielleicht eher `Tkinter` anbieten was zur Standardbibliothek gehört und solche GUI-Elemente schon fertig anbietet.

Re: raw_input

Verfasst: Donnerstag 16. Februar 2012, 11:06
von lunar
@dodo: http://lmgtfy.com/?q=urwid, erster Treffer :roll:

Ich habe Dich nicht wegen Deines Avatars beschimpft, sondern Dich höflich darauf hingewiesen, dass dieses Ding ziemlich lästig ist, eine Ansicht, mit der ich offensichtlich nicht alleine stehe. Ich kann Dich nicht zwingen, einen anderen Avatar zu nutzen, ich habe lediglich darum gebeten. Es steht Dir frei, diese Bitte zu ignorieren, ebenso wie es mir freisteht, Deine Beiträge dann zu ignorieren.

Re: raw_input

Verfasst: Donnerstag 16. Februar 2012, 12:06
von Hyperion
dodo hat geschrieben:Dürfte ich freundlich darauf hinweisen, dass ich meine Frage(n) nicht deshalb gestellt habe, um keine vernünftige Antwort zu bekommen, oder gar wegen meinem Avatar beschimpft zu werden; Ich habe die Frage deshalb gestellt, weil ich eine vernünftige Antwort wollte.
Noch mal ergänzend zu anderen: Du hast hier kein Anrecht oder gar eine Garantie auf "vernünftige" Antworten - je nach User oder auch Standpunkt kommen auch mal ganz unvernünftige Antworten ;-)

Was den Avatar angeht: Ich würde mir auch einen nicht animierten wünschen :-)

Re: raw_input

Verfasst: Donnerstag 16. Februar 2012, 15:09
von deets
@dodo

Kein mir bekanntes GUI (und auch text-basierte GUIs sind GUIs) kommt mit mehrerer Threads klar. Bestenfalls gibt es wie zB in Qt einen thread-agnostischen Event-Mechanismus, der von alleine fuer eine injektion in den GUI-thread sorgt.

Will sagen: du wirst das mit einem thread machen muessen, und mit wesentlich mehr kontrolle ueber das Terminal. urwid mag da helfen, oder curses. Eine pygame-basierte GUI (oder Tkinter) geht natuerlich auch. Aber auch da alles in *EINEM* Thread! Was deine Hintergrund-Threads nicht stoert, aber da musst du explizit fuer sorgen, dass da von und in den main-thread kommuniziert wird.

Und last but not least: klemm dir deine Attituede, dir wuerde hier nicht hilfreich geantwortet. Sonst wird das zur selbsterfuellenden Prophezeiung. Denn der einfachste Weg, den Augenkrebs zu vermeiden, der durch ausfallende Smily-Augen entsteht ist, dich einfach auf die ignore-Liste zu setzten. Und da waerest du nach der letzten zaelhung schon bei einer Handvoll der erfahrensten Nutzer hier...

Re: raw_input

Verfasst: Freitag 17. Februar 2012, 12:24
von dodo
Ich habe meinen Avatar geändert.
Den neuen finde ich sowieso besser(den habe ich selbst mit GIMP gemacht)...
BlackJack hat geschrieben:urwid`: http://duckduckgo.com/?q=urwid
Ich hatte nicht vor, deswegen eine Software downloaden zu müssen :( .

Die vernünftigste Variante ist warscheinlich wxpython...
Ansonsten pygame.
Ich find dieses Problem langsam echt lästig. Vielleicht sollte ich mir die Mühe einfach sparen, die ganze Zeit zu googlen, in den Büchern zu stöbern... und einfach ein GUI verwenden, denn da hab ich das Problem mit print & Co nicht. Dazu kommt, dass ich die beiden threads dadurch auch getrennt nutzen kann, was den Vorteil hat, dass ich nicht die Eingabe unterbrechen muss :wink: .

Damit steht fest, dass es umständlicher wäre, kein GUI zu machen,als ein GUI zu nutzen, und deswegen ist das Problem eigentlich gelöst.
Aber ich bin immer noch offen für Vorschläge, die mir die Arbeit einfacher machen - (Die meisten) Programmierer(so wie ich) sind eben faul :D

Re: raw_input

Verfasst: Freitag 17. Februar 2012, 12:32
von deets
@dodo

Danke fuer den neuen Avatar.

Wieso du jetzt ein Problem mit dem *download* von urwid hast, obwohl auch pygame & wx 3rd-party-Pakete sind erschliesst sich mir zwar nicht so ganz - aber das musst du selbst wissen.