1

Тема: Допоможіть виправити помилку _tkinter.TclError: wrong # args

Я початківець в об*єктно-орієнтовному програмуванні (і в программуванні загалом) і ось уже трохи розібрався в Ткінтері написав кілька простих програм а зараз хотів написати простого чат-бота. Програма складається з покищо дуже простого модуля "штучного інтелекту" який підключається до самої програми в якій створюється вікно простого чату. Ось сам код:

Модуль бота

from random import *

class AI():
    def __init__(self):
        self.grats = open('grats.txt').read().split(',') #'Hello' and so on...

    def __str__(msg):
        return 'something went wrong!'

    def analyse(self,request):
        if request in self.grats:
            answer = self.grats[randrange(0,len(self.grats) + 1)]
            return answer

Чат

#AI chat-bot
from tkinter import *
from ai import *

class A1(AI):
    def __init__(self):
        
        super().__init__()

        self.ai_answer = None
        self.inputted = None
        
        self.F1 = Frame(win,width = 700, height = 700)
        self.F1.grid()

        self.massage_area = Text(self.F1, wrap = WORD)
        self.massage_area.grid(column = 0, row = 1, padx = 6, pady = 6, columnspan = 3)

        self.input_area = Text(self.F1, wrap = WORD, height = 3, width = 60)
        self.input_area.grid(column = 0, row = 2, columnspan = 2, padx = 6, pady = 6, sticky = N)

        self.input_but = Button(text = 'INPUT',width = 10, height = 4, command = self.send_massage)
        self.input_but.grid(column = 3, row = 2, padx = 6, pady = 6, sticky = N)


    def send_massage(self):
        self.inputted = self.input_area.get(0.0, END)
        if self.inputted != '':            
            self.massage_area.insert(INSERT, self.inputted)
            self.massage_area.insert(INSERT, self.analyse(self.inputted))
            self.input_area.delete(0.0, END)

        


win = Tk()
app = A1()

win.mainloop()

Файл grats.txt - це просто список привітань. Так ось, я не можу скористатись  методом analyse об*єкту AI коли хочу йому передати йому ввід користувача. Ось код помилки -

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1550, in __call__
    return self.func(*args)
  File "C:\Users\User\Desktop\Programming\Python\BOT\bot.py", line 30, in send_massage
    self.massage_area.insert(INSERT, self.analyse(self.inputted))
  File "C:\Users\User\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 3118, in insert
    self.tk.call((self._w, 'insert', index, chars) + args)
_tkinter.TclError: wrong # args: should be ".510592618792.510592618960 insert index chars ?tagList chars tagList ...?"

2

Re: Допоможіть виправити помилку _tkinter.TclError: wrong # args

1. Чистіть прочитані/введені рядки хоча б strip-ом. Нові рядки можуть чіплятися.
2. AI.analyse має повертати рядок, але якщо не виконується умова, він повертає None, на що, зрештою, і лається Python.

Подякували: Akucuki1