Seite 1 von 1

rechtsbündige Spalten in der Listbox

Verfasst: Montag 11. März 2019, 10:33
von DB7WN
Hallo allerseits!
Ich möchte Daten aus einer MySQL-Tabelle lesen und in schönen Spalten rechtsbündig in einer Tkinter Listbox darstellen. Es gelingt mir nicht die Spalten rechtsbündig anzulegen. So versuche ich das:
abfrage = cursor.fetchall()
for zeile in abfrage:
anz.insert('end', str(zeile[0]) + str(zeile[1]).rjust(7) + str(zeile[2]).rjust(8) + str(zeile[3]).rjust(8) + str(zeile[4]).rjust(8)+ str(zeile[5]).rjust(8) + str(zeile[6]).rjust(8) + '\n')
Die Spalten sehen allerdings so aus, als seien sie zentriert und nicht rechtsbündig. Die Positionierung der Spalten bezieht sich anscheinend auf die Position der Spalte davor, so dass bei unterschiedlich breiten Spalteninhalten, das Ganze sehr "wackelig" aussieht. Vermutlich verwende ich "rjust()" nicht richtig, oder funktioniert das gar nicht in Tkinter? Ich finde keine gute Erklärung dazu. Oder kann man das irgendwie anders bewerkstelligen?
Ein screenshot wäre jetzt hilfreich, aber krieg ich nicht hin.

Gruß - Uli

Re: rechtsbündige Spalten in der Listbox

Verfasst: Montag 11. März 2019, 12:55
von __blackjack__
@DB7WN: Da so ein Eintrag einfach nur eine Zeichenkette ist, hängt das von der Schriftart ab. `rjust()` fügt ja nur Leerzeichen ein. Du hast da das gleiche Problem welches Du auch an anderen Stellen (Textverarbeitung, Webseiten/Foren, …) hast wenn Du mit Leerzeichen ausgerichteten Text versuchst mit einer proportionalen Schriftart zu realisieren – die verschiedenen Zeichen sind unterschiedlich breit und damit kann man ausrichten mit Leerzeichen nicht machen.

Du könntest eine nicht-proportionale Schriftart für die Listbox verwenden, oder Du müsstest Dir eine andere Möglichkeit der Darstellung überlegen. Beispielsweise ein Grid-Layout wo in der ersten Spalte ein Radiobutton zur Auswahl einer Zeile ist.

Re: rechtsbündige Spalten in der Listbox

Verfasst: Montag 11. März 2019, 17:08
von DB7WN
guter Tip! Danke!
Mit Courier funktionierts.