0

Python で関数をtkinter使用して表示するように、ラベルのエンコードの結果を表示したいと考えています。print

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"
4

1 に答える 1

1

メソッドの最初の引数insertはインデックスである必要があります。最も一般的なのは、挿入カーソルに挿入するための「insert」と、最後に挿入するための「end」です。

挿入するインデックスと項目の後に、次の引数はタグのリストとして解釈されます。"-->"したがって、挿入されるテキストの一部になりたい場合iは、それを 2 番目の引数の一部として含める必要があります。

また、改行を追加する必要があります。

t.insert(item, f"{item} --> {i}\n")
于 2020-07-14T13:57:02.640 に答える