Nierówne dane w listboxie

0

Witam

Czy można jakoś zrobić, żeby dane w przykładzie poniżej nie wypisywały się krzywo nawet jak zawierają inną ilość znaków? Wypisują się równo tylko wtedy gdy każdy element tupli ma podobną ilość znaków, a jak np. element name[0] ma dużo mniej albo więcej znaków niż pozostałe elementy name[0], to cała linijka wypisuje się nierówno. Występuje to tylko w Tkinterze, wypisując takie zestawienie poprzez print wszystko wychodzi równo.

from Tkinter import *
import re

root = Tk()

root.geometry("420x450+500+480")

listBox = Listbox(root, width = 70)
listBox.grid(row=0, column=0, rowspan=6)

mess = '''"abcdsomething=\"45667\" something2=\"5/7/2/5/4\" other=\"42\"
       "something=\"ab2837447238\" something2=\"52/7/2/5/4\" other=\"4\"
       "something=\"84734\" something2=\"2/7/2/3/7\" other=\"643\""'''

for name in re.findall('something=\"(.*?)\" something2=\"(\d+)\/(\d+)\/(\d+)\/\d+\/\d+\" other=\"(\d+)\"', mess, re.DOTALL):
    listBox.insert(0, "{:<25} | {:<9} | {:<9} | {:<9} | {:<9}".format(name[0], name[1], name[2], name[3], name[4]))

root.mainloop()
1

Konsola używa fontów, w których każdy znak ma taką samą szerokość (tak zwane monospaced)
a Tkinter używa fontów, w których znaki mają różną szerokość np. spacja jest węższa.

Musisz w Listbox zmienić czcionkę na taką o stałej szerokości znaków
na przykład "monospace" lub "Courier" (jeśli taką masz w systemie)

listBox = Listbox(root, width=70, font='monospace')

https://en.wikipedia.org/wiki/Monospaced_font

1 użytkowników online, w tym zalogowanych: 0, gości: 1