【问题标题】:Pretty print data in tkinter Labeltkinter 标签中的漂亮打印数据
【发布时间】:2020-02-27 17:12:33
【问题描述】:

我有以下示例数据

data=[(1,'JohnCena','Peter',24,74),
      (2,'James','Peter',24,70),
      (3,'Cena','Peter',14,64),
      (14,'John','Mars',34,174)]

我想在 tkinter 输出窗口上以漂亮的表格方式在 python gui 上打印它。我正在使用tabulate 包进行打印。 这是我的功能

def display_date():
    disp=pd.DataFrame(data,columns=['id','first name','last name','age','marks'])
    newwin = Toplevel(right_frame)
    newwin.geometry('500x400')
    Label_data=Label(newwin,text=tabulate(disp, headers='keys',tablefmt='github',showindex=False))
    Label_data.place(x=20,y=50)

你可以看到输出不是对称的。我想要一个漂亮的对称表格输出。我该怎么做呢

这是输出

【问题讨论】:

  • 尝试使用等宽字体。 Label(...,font='Consolas')
  • 我认为您需要一些等宽字体(意味着所有字母具有相同的宽度)来正确对齐 tabulate 生成的列。例如标签内的参数font='Roboto Mono'
  • 替代设计方案:为每个单元格创建一个Entry对象,并将它们排列在一个网格中。当您拥有 GUI 时,您无需使用文本来定位数据。

标签: python user-interface tkinter label tabulate


【解决方案1】:

问题tabulate 输出,显示在tk.Label 中,不会扭曲数据。


正如 cmets 中所指出的,这可以使用 monospaced font 来完成。
您必须使用以下Label 选项,

justify=tk.LEFT
anchor='nw'

对齐表格left,并将其粘贴到左上角。


参考:


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()

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-08-19
    • 1970-01-01
    • 2020-11-12
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多