EXTREMES Problem HILFE!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

@lunar: Schöne Lösung. Wenn man redisplay weglässt, funktioniert es damit auch in der Windows-Konsole.

Code: Alles auswählen

import pyreadline as readline

class readline_insert(object):
    def __init__(self, value):
        self.value = value

    def __enter__(self):
        self.old_hook = readline.set_pre_input_hook(self.input_hook)

    def __exit__(self, exc_type, exc_value, traceback):
        readline.set_pre_input_hook(self.old_hook)

    def input_hook(self):
        readline.insert_text(self.value)

with readline_insert('Hallo'):
	print raw_input('Test > ')
Braucht man redisplay denn überhaupt unter Linux?
MfG
HWK
lunar

Hier funktionierts nicht ohne.
problembär

Wirklich schöne Lösung, lunar!

Hatte sonst noch die Quellen von readline runtergeladen und versucht, "readline.redisplay()" in Python zu emulieren. Hatte gedacht, das könnte doch eigentlich nicht so schwer sein. Es waren dort aber schon in der Grundfunktion ca. 600 Zeilen C-Code :shock: ...

Gruß
Benutzeravatar
snafu
User
Beiträge: 6861
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn ich mich mal nörgelnderweise an Details aufhalten darf: Ein Name wie `readline_default_value()` wäre IMHO klarer. Bei "insert" könnte man denken, der String würde wie bei Listen *vor* dem eigentlichen Text eingesetzt werden. Mit "default_value" wäre auch die Intention etwas besser beschrieben. Man möchte halt einen Standardwert vorgeben, den der Benutzer ändern kann und eigentlich nicht irgendwas in einen Text - oder besser: in ein "readline" (was auch immer das ist) - einsetzen. Meine Meinung.
lunar

@snafu: Es steht Dir frei, den Namen zu verändern.
Antworten