以前C#で作った入力したテキストに対して「**って何?」と返事をするロボットを作成した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import tkinter as tk import tkinter.scrolledtext as tkst class Responder(): def __init__(self, name): self.name = name def response(self, input_text): return f'{input_text}ってなに?' class Unmo(): def __init__(self, name): self.name = name self.responder = Responder('What') def dialog(self, input_text): return self.responder.response(input_text) def prompt(unmo): return f'{unmo.name}:{unmo.responder.name} >' def press_ent(event): in_txt = ent.get() txt.insert(tk.END, '> ' + in_txt + '\n') respose = proto.dialog(in_txt) txt.insert(tk.END, prompt(proto) + respose+'\n') ent.delete(0, tk.END) def show_txt(tt): txt.insert(tk.END, tt+'\n') root = tk.Tk() root.title('和文ボット') root.geometry('500x400') txt = tkst.ScrolledText(relief='sunken', bg='lightgreen', font=('', 18)) txt.place(x=10, y=10, width=480, height=300) ent = tk.Entry(relief='sunken', font=('', 18)) ent.place(x=10, y=340, width=460) ent.bind('<Return>', press_ent) ent.focus_set() proto = Unmo('proto') show_txt('Unmo System') root.mainloop() |
窓をclassにしようと思ったけどうまく行かないみたいなので、クラスにするのはやめた。 また、スクロールバーが使えるScrolledTextを使ってみた。