的Tkinter 功能不能正常工作

问题描述:

我看了这么多其他的这些问题的答案,但他们工作...所以没有标记它复制 ... 我是一名Python自学者,在Python 3.6上运行在Windows上。 这是代码 -的Tkinter <Return>功能不能正常工作

self.btnCalc = Button(self, text = "Calculate", command=self.calculate, bd=10) 
self.btnCalc.grid(row = 11, column = 5) 
self.btnCalc.bind('<Return>', self.calculate) 

This is the link整个代码(计算学分)。

+0

什么不行?你其实没有说过。 – SneakyTurtle

+0

当我按下回车键时,按钮不会被执行。 – avc

我想你不想点击按钮就触发命令,所以你需要绑定事件到你的主控件self

您不会将事件绑定到按钮命令,而是直接绑定到命令。当您创建一个父一个结合,这是向所有儿童提供小工具,进入...

您可以使用此:

self.bind('<Return>', self.calculate) 
# or self.bind('<KP_Enter>', self.calculate) to trigger numpad Return 

但你的方法calculate必须为事件的参数,即使你不使用它:

def calculate(self, event=None): 

说明有关事件

当您使用方法widget.bind(...)将函数绑定到事件时,tkinter将使用一个参数调用此函数:事件。它包含有关触发操作的信息,例如鼠标的坐标或正确处理事件的任何相关详细信息。

你不用它在你的函数中(但?),但你需要声明它。

然后,当您使用的按钮,从绑定的功能,它必须被声明为可选参数,用默认值:None,因为一个按钮内部的命令不会产生该它调用函数时参数event

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

+1

罗在Tkinter的,你只需要绑定没有必要的密钥 - http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm但你说得对,计算没有一个'event'参数 – abccd

+0

你'对,既可以工作,但少于更好... – PRMoureu

+1

但是,当我现在手动(用鼠标)按下按钮,它显示在Tkinter回调 回溯(最近的呼叫最后): 文件“C :\ Python36 \ lib中\ Tkinter的\ __ init__.py”,线1699,在__call__ 返回self.func(*参数) 类型错误:计算()缺少1个所需位置参数:“event'' – avc