【问题标题】:Python Tkinter GUI messy printing formatPython Tkinter GUI 凌乱的打印格式
【发布时间】:2018-07-30 16:02:03
【问题描述】:
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 中打印特定行中的特定值。但是打印的值的格式非常混乱,我不确定如何清理它,此外我希望它不显示旁边标记的数字,只是产品名称(蓝色模糊)和与之关联的值(这是带小数的数值)。

这是图形用户界面的快照:

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

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

如果有帮助的话,这些是预测文件,(带有日期的标题的原因)

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

【问题讨论】:

  • 您的示例使用master,但您从未声明master 是什么。我假设这是Tk() 实例?还将command=lambda: retrieve_input() 更改为command=retrieve_input。你不需要 lambda。
  • @Mike-SMT 是的!我刚刚添加了它。而且,这个代码是一个更大的代码的一部分,我必须压缩它才能显示在这里。实际上,我有几个用户输入,而 lamda 函数是原始代码运行的唯一方式
  • 这很好,但就您的示例代码而言,不需要它。我们可以从您的 CSV 中获取示例行吗?这样我们就可以实际测试代码了。
  • 它不一定是您的真实数据。只是我们可以使用的相同格式的东西。此外,您的蓝色涂鸦并没有真正隐藏数据。我可以缩放和阅读。最好只删除列中的值,然后做一个屏幕截图,然后撤消删除。
  • 哼。当我尝试将 filevalue 转换为列表时,我只得到 Jul-18 列中的数字,没有别的。在文本框中使用这个可能会很棘手。您可能需要读取每行中每个单元格的数据并使用列表来跟踪它们,然后将这些数据均匀地放入文本框或一些标签中。

标签: python pandas csv tkinter format


【解决方案1】:

好的,经过一些测试,我认为我找到了适合您的修复方法。

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

尝试使用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()

【讨论】:

  • 欢迎您。除了尝试将所有数据记录到列表中并根据您的需要重新格式化字符串之外,我不知道有任何其他方法可以纠正大标签字符串中的间距问题。但如果修复字体对你有用,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
相关资源
最近更新 更多