python - tkinter 标签中的漂亮打印数据
问题描述
我有以下示例数据
data=[(1,'JohnCena','Peter',24,74),
(2,'James','Peter',24,70),
(3,'Cena','Peter',14,64),
(14,'John','Mars',34,174)]
我想在 tkinter 输出窗口上以漂亮的表格方式在 python gui 上打印它。我正在使用制表包进行打印。这是我的功能
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)
您可以看到输出不对称。我想要一个漂亮的对称表格输出。我怎样才能做到这一点
解决方案
问题:
tabulate
输出,以a显示tk.Label
,不扭曲数据。
正如评论中所指出的,这可以使用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()
推荐阅读
- python - Tensorflow 2中tf.variable的条件赋值
- php - 在 yii2 gridview 中显示“计数”列
- python - Django:当表单无效时防止表单重置
- java - Java - 如何从资源文件夹加载自定义字体
- java - 如何从 java 8 中的 hashmap 中获取值
- google-analytics - Cloudflare 似乎阻止了 Google Analytics onclick 事件
- javascript - 动态appendChild后统计子元素个数
- javascript - 如何访问 div 目标以在反应中切换列表组项的样式?
- apache-drill - 如何在 Apache Drill 中从 REST 客户端传递访问令牌?
- python - 编写 Smallf*ck 解释器