Привязка событий Tkinter <Return>не работает в скрипте Python - PullRequest
0 голосов
/ 05 декабря 2018

Спасибо, что нашли время ответить на вопрос.Я новичок в написании сценариев, поэтому я не слишком знаком с принципами графического интерфейса.

Я пишу сценарий с использованием tkinter для поиска и печати информации из wolframalpha и wikipedia на основе ввода текста пользователем и нажатия клавиши.

class citrus(tkinter.Tk):
    def __init__(self, master):
        tkinter   .Tk.__init__(self, master)
        self.master = master
        self.initialize()
    def initialize(self):
        self.grid()
        self.entry = tkinter.Entry(self)
        self.entry.bind = ("<Return>", self.OnEnter)
        self.entry.grid(column=0, row=0)
        self.grid_columnconfigure(0, weight=1)
        self.resizable(True, True)
 def OnEnter(self, event):
        input = self.entryVariable.get()
        input = input.lower
        try:
            appID = "ER92YJ-GAXAJEPXEK"
            client = wolf.Client(appID)
            res = client.query(input)
            answer = next(res.results).text
            print(answer)
        except:
            wikipedia.set_lang("en")
            print(wikipedia.summary(input, sentences=3))

if __name__ == "__main__":
    app = citrus(None)
    app.title("citrus")
    app.mainloop()

По какой-то причине отображаемое окно графического интерфейса не будет ничего делать после того, как пользователь введет текст в текстовое поле и нажмет клавишу, тогда как он должен давать информацию, собранную из wolframalpha или википедии.

Буду признателен за объяснения причин, по которым скрипт не удался.

1 Ответ

0 голосов
/ 05 декабря 2018

Вы переопределяете bind, а не вызываете его.

Проблема в том, что = в этой строке кода:

self.entry.bind = ("<Return>", self.OnEnter)

Код должен быть таким:

self.entry.bind("<Return>", self.OnEnter)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...