2017-09-23 33 views
1

我看了這麼多其他的這些問題的答案,但他們工作...所以沒有標記它複製 ... 我是一名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

回答

2

我想你不想點擊按鈕就觸發命令,所以你需要綁定事件到你的主控件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