Question: tabulate
输出,显示在tk.Label
,而不扭曲数据。
正如评论中指出的,这可以使用monospaced font
.
你必须使用以下内容Label
选项,
justify=tk.LEFT
anchor='nw'
证明表格合理left
,并将其粘贴到左上角位置。
参考:
- Tkinter 标签小部件 http://effbot.org/tkinterbook/label.htm
- tabulate https://pyhdust.readthedocs.io/en/latest/tabulate.html
- 将表格格式的文本打印到 tk.Text 小部件中,未按预期对齐。 https://stackoverflow.com/a/59346200/7414759
import tkinter as tk
from tabulate import tabulate
data = [('id', 'first name', 'last name', 'age', 'marks'),
(1, 'JohnCena', 'Peter', 24, 74),
(2, 'James', 'Peter', 24, 70),
(3, 'Cena', 'Peter', 14, 64),
(14, 'John', 'Mars', 34, 174)
]
class TabulateLabel(tk.Label):
def __init__(self, parent, data, **kwargs):
super().__init__(parent,
font=('Consolas', 10),
justify=tk.LEFT, anchor='nw', **kwargs)
text = tabulate(data, headers='firstrow', tablefmt='github', showindex=False)
self.configure(text=text)
class App(tk.Tk):
def __init__(self):
super().__init__()
TabulateLabel(self, data=data, bg='white').grid(sticky='ew')
if __name__ == "__main__":
App().mainloop()