Несколько строк отображаются в метке с использованием textvariable - PullRequest
0 голосов
/ 12 марта 2019

Я использую tkinter и создал ярлык с textvariable.Я хочу, чтобы, скажем, топ-5 клиентов были указаны в этом ярлыке.Список клиентов из файла Excel.

Часть моего кода:

import pandas as pd
import tkinter as tk
from tkinter import ttk

df = pd.read_excel('Sample.xlsx', "Sheet1")

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.grid_rowconfigure(1, weight=1)
        self.grid_columnconfigure(1, weight=1)
        self.grid()

        self.baseDown = tk.Frame(root, width=800, height = 400, background='#E6E6FA', relief = "groove", borderwidth = 2)
        self.baseDown.grid(columnspan=7, row=1, rowspan = 4, pady = 1, padx = 2, sticky="wn")
        self.BDown = tk.LabelFrame(self.baseDown, text = " Analysis ", width=800, height=400, background ='#E6E6FA', relief = 'ridge', borderwidth = 2)
        self.BDown.config(font = ('Verdana', 8, 'bold'))
        self.BDown.grid(columnspan=7, row=1, rowspan = 4, pady = 3, padx = 2, sticky="wn")
        self.baseDown.grid()

        self.cust_var = tk.StringVar()
        self.lbl_custname = ttk.Label(self.BDown, textvariable = self.cust_var)
        self.lbl_custname.config(font=('Segoe UI', 8), width = 100)
        self.lbl_custname.grid(row=1, column=1, columnspan=3, pady = 1, padx = 2, sticky="nw")

        top = df.nlargest(5, columns=['Value'])
        for index, row in top.iterrows():
            self.cust_var.set(row[top['Customer Name'].values.astype(str)])


root = tk.Tk()
root.configure(background = 'white')
#root.resizable(False, False)
app = Application(master=root)
app.mainloop()

Вывод выглядит следующим образом: Customer1 NaN Customer2 NaN Customer3 NaN Customer4 NaN Customer5 NaN Name: 20371, dType: Object

Список клиентов верен, но я не понимаю, почему существует NaN и почему также появляется тип данных.

Мой файл Excel содержит только 2 столбца: Значение имени клиента

1 Ответ

0 голосов
/ 13 марта 2019

Вы устанавливаете self.cust_var на результат row[top['CustomerName'].values.astype(str)] 5 раз.

Если вы хотите показать то, что ожидаете, просто установите переменную один раз (замените цикл for):

self.cust_var.set('\n'.join(top['Customer Name'].values))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...