Python Tkinter GUI формат грязной печати

1
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, для определенных значений в определенной строке. Однако формат печатаемых значений является спокойным, и я не уверен, как его очистить. Кроме того, я хотел бы, чтобы он не отображал числа, помеченные рядом с ним. Просто имя продукта (размытое синим цветом) и связанное с ним значение (это числовые значения с десятичными знаками).

Вот снимок графического интерфейса:

Изображение 174551

Кроме того, в самом конце списка это также отображается:

Изображение 174551

В идеале я хотел бы, чтобы он отображал только заголовок (июль-18), а не тип данных

Также, если это помогает знать, это файлы прогноза (причина для заголовков с датами)

Вот фиктивный образ того, как выглядят мои файлы csv:

Изображение 174551

  • 0
    В вашем примере используется master но вы никогда не объявляете, что такое master . Я предполагаю, что это экземпляр Tk() ? Также измените command=lambda: retrieve_input() на command=retrieve_input . Вам не нужна лямбда.
  • 0
    @Mike-SMT Mike-SMT Да, это так! Я только что добавил это. И этот код является частью гораздо большего кода, и мне пришлось сжать его, чтобы отобразить здесь. На самом деле у меня есть несколько пользовательских вводов, и функция lamda - единственный способ, которым работает оригинальный код.
Показать ещё 6 комментариев
Теги:
pandas
csv
tkinter
format

1 ответ

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()
  • 0
    Да! Это сработало отлично. Спасибо.
  • 0
    Пожалуйста. Я не знаю ни одного другого способа исправить проблемы с пробелами внутри большой строки метки, кроме как попытаться записать все данные в список и переформатировать строку в соответствии с вашими потребностями. Но если исправление шрифта работает для вас, то это замечательно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню