首页 > 解决方案 > Python Tkinter GUI 凌乱的打印格式

问题描述

import pandas as pd
import csv
from tkinter import *

master = Tk()

textBox = Text(master, height=1, width=10)
textBox.grid(row=0, column=1)

fileVar = StringVar()
fileLabel = Label(master, textvariable=fileVar)
fileLabel.grid(row=3, column=1)

fileVar2 = StringVar()
fileLabel2 = Label(master, textvariable=fileVar)
fileLabel2.grid(row=3, column=2)

def retrieve_input():
    Customer = textBox.get("1.0","end-1c") 

    fileread = pd.read_csv('50.csv', encoding='latin-1')
    filevalue = fileread.loc[fileread['Customer'].str.contains(Customer, na=False),"Jul-18\nQty"]
    productheader = fileread.loc[fileread['Customer'].str.contains(Customer, na=False), 'Product']    

    fileVar.set(productheader)
    fileVar2.set(filevalue)

button1 = Button(master,text="Show Values", command=lambda: retrieve_input())
button1.grid(row=4, column=1)

mainloop()

我有这个程序可以在 Tkinter Gui 中打印特定行中的特定值。但是打印的值的格式非常混乱,我不确定如何清理它,另外我希望它不显示旁边标记的数字,只是产品名称(蓝色模糊)和与之关联的值(这是带小数的数值)。

这是 GUI 的快照:

TkinterGUI

此外,在列表的最底部,还会显示:

结束值

理想情况下,我希望它只显示标题(7 月 18 日)而不是数据类型

此外,如果有助于了解,这些是预测文件,(带有日期的标题的原因)

这是我的 csv 文件的虚拟图像:

在此处输入图像描述

标签: pythonpandascsvtkinterformat

解决方案


好的,经过一些测试,我想我找到了一个适合你的修复程序。

标签内间距的主要问题是您的字体不是被认为是等宽字体的问题。

尝试使用字体Consolas,看看它修复布局的效果如何。

import pandas as pd
from tkinter import *


master = Tk()

textBox = Text(master, height=1, width=10, font=('Consolas', 12))
textBox.grid(row=0, column=1)

fileVar = StringVar()
fileLabel = Label(master, textvariable=fileVar, font=('Consolas', 12))
fileLabel.grid(row=3, column=1)

def retrieve_input():
    department = textBox.get("1.0","end-1c") 
    fileread = pd.read_csv('50.csv', encoding='latin-1')
    filevalue = fileread.loc[fileread['Customer'].str.contains(department, na=False),("Jul-18\nQty", "Product")]

    fileVar.set(filevalue)

button1 = Button(master,text="Show Values", command=lambda: retrieve_input())
button1.grid(row=4, column=1)

master.mainloop()

推荐阅读