【问题标题】:Tkinter <Return> event binding is not working in python scriptTkinter <Return> 事件绑定在 python 脚本中不起作用
【发布时间】:2018-12-05 18:20:13
【问题描述】:

感谢您抽出宝贵时间回答问题。我是脚本初学者,所以对 GUI 原理不太熟悉。

我正在编写一个涉及 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()

由于某种原因,显示的 GUI 窗口在用户将文本输入文本框并按下键后不会执行任何操作,而它应该提供从 wolframalpha 或 wikipedia 收集的信息。

如果您能解释脚本失败的原因,我将不胜感激。

【问题讨论】:

  • 代码示例中的缩进被破坏了。 def OnEnter 没有正确缩进。

标签: python-3.x tkinter


【解决方案1】:

您正在重新定义bind,而不是调用它。

问题在于这行代码中的=

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

代码应该是这样的:

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

【讨论】:

    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多