Показать список текста в tkinter - PullRequest
0 голосов
/ 14 июля 2020

Я хочу отобразить результат кодирования моей метки в tkinter, как будто я показываю его с помощью функции print в python.

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
df["REPORT_FAMILY"] = le.fit_transform(df["REPORT_FAMILY"])
print("Mapping: ")
for i, item in enumerate(le.classes_):
    print(item, "-->", i)

Этот код дает следующие результаты:

Mapping: 
ADELBERT SC3000 --> 0
ADELBERT SC3020 --> 1
ALAR --> 2
ALTER EGO SC460 --> 3
ALTER EGO SCV360 --> 4
ARYA --> 5
BEACHCOMBER --> 6

Как мне сделать то же самое в tkinter? Я использую следующий код, но получаю ошибку. Моя цель - отобразить закодированный столбец REPORT_FAMILY в соответствующей категории в REPORT_FAMILY.

import tkinter as tk 
#creating the window
window = tk.Tk()
window.title("FPY+ Prediction")

canvas1 = tk.Canvas(window, width = 500, height = 300)
canvas1.pack()

t = tk.Text(window)
for i, item in enumerate(le.classes_):
    t.insert(item, "-->", i)
t.pack()

window.mainloop()

Я получаю следующую ошибку:

---------------------------------------------------------------------------
TclError                                  Traceback (most recent call last)
<ipython-input-30-6c09ea2a9048> in <module>
     11 canvas1.create_window(200, 300)
     12 for i, item in enumerate(le.classes_):
---> 13     t.insert(item, "-->", i)
     14 t.pack()
     15 

~\Anaconda3\lib\tkinter\__init__.py in insert(self, index, chars, *args)
   3270         """Insert CHARS before the characters at INDEX. An additional
   3271         tag can be given in ARGS. Additional CHARS and tags can follow in ARGS."""
-> 3272         self.tk.call((self._w, 'insert', index, chars) + args)
   3273     def mark_gravity(self, markName, direction=None):
   3274         """Change the gravity of a mark MARKNAME to DIRECTION (LEFT or RIGHT).

TclError: bad text index "ADELBERT SC3000"

1 Ответ

1 голос
/ 14 июля 2020

Первым аргументом метода insert должен быть индекс. Наиболее распространенными являются «insert» для вставки в курсор вставки и «end» для вставки в конце.

После индекса и вставляемого элемента следующий аргумент интерпретируется как список тегов . Итак, если вы хотите, чтобы "-->" и i были частью вставляемого текста, вам необходимо включить его как часть второго аргумента.

Вам также необходимо добавить новую строку.

t.insert(item, f"{item} --> {i}\n")
...