Urwid Formular Layout

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
shoening
User
Beiträge: 19
Registriert: Donnerstag 20. Oktober 2011, 19:28

Hallo,

ich versuche gerade, mir mit URWID ein kleines Utility zu schreiben, mit dem ich regelmäßig eine Handvoll Daten erfassen wollte.

Prinzipiell habe ich das auch jetzt soweit fertig - ich wollte aber das „Formular“ für die Erfassung der Daten etwas geschickter gestalten.

Was ich nicht hinbekomme: meine urwid.Edit Felder nehmen immer die ganze verfügbare Breite ein. Wie kann ich die Breite z.B. auf 10 Zeichen beschränken?

Das ganze ungefähr so aussehen: (X ist der Eingabebereich der urwid.Edit Felder)

Code: Alles auswählen

Datum: XXXXXXXXX
Zeit:  XXXXX
Bisher mache ich das folgendermaßen, aber da nehmen die Textfelder den gesamten Raum bis zum rechten Rand der LineBox ein:

Code: Alles auswählen

entries = [
   urwid.Edit(u'Datum: '),
   urwid.Edit(u'Zeit: ') ]
list_walker = urwid.SimpleFocusListWalker(edit)
content = urwid.ListBox(list_walker)
window = urwid.LineBox(content)
Viele Grüße
Stefan
shoening
User
Beiträge: 19
Registriert: Donnerstag 20. Oktober 2011, 19:28

Ich habe jetzt herausgefunden wie das geht:

Ich packe die einzelnen Zeilen der urwid.ListBox in ein urwid.Columns Objekt. Da kann man dann die gewünschte Breite mit angeben. Dann ist es allerdings noch notwendig ein abschließendes urwid.Text() Objekt zu ergänzen, das zum Füllen der Platzes bis zum Ende der Zeile genutzt wird:

Code: Alles auswählen

entries = [
   ...
   urwid.Columns([
      (18. urwid.Edit(u'Datum: ')),
      urwid.Text(u' ') ]),
   urwid.Columns([
      (15, urwid.Edit(u'Zeit:  ')),
      urwid.Text(u' ') ]),
...
Antworten