回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我使用Tkinter在python中制作了一个简单的GUI。
我写它的目的是,当一个按钮被按下时,一个函数(度量)被调用。
我现在尝试绑定Enter键来执行此功能,方法是使用:</p>
<pre><code>root.bind("<Return>", measure)
</code></pre>
<p>按Enter键时会出现错误:</p>
^{pr2}$
<p>快速搜索告诉我,如果我给函数提供参数(self),那么enter bind将起作用,但是如果我这样做,那么按钮小部件会给出错误:</p>
<pre><code>TypeError: measure() takes exactly 1 positional argument (0 given)
</code></pre>
<p>有什么快速解决办法吗?
Python初学者,如果这是一个非常简单的问题,请道歉。在</p>
<pre><code>import datetime
import csv
from tkinter import *
from tkinter import messagebox
root = Tk()
winx = 480
winy = 320
virtual_reading = '1.40mm'
def measure():
todays_date = datetime.date.today()
try:
get_tool_no = int(tool_no_entry.get())
if get_tool_no <= 0:
messagebox.showerror("Try Again","Please Enter A Number")
else:
with open("thickness records.csv", "a") as thicknessdb:
thicknessdbWriter = csv.writer(thicknessdb, dialect='excel', lineterminator='\r')
thicknessdbWriter.writerow([get_tool_no] + [todays_date] + [virtual_reading])
thicknessdb.close()
except:
messagebox.showerror("Try Again","Please Enter A Number")
tool_no_entry.delete(0, END)
root.resizable(width=FALSE, height=FALSE)
root.geometry('%dx%d' % (winx,winy))
root.title("Micrometer Reader V1.0")
record_button = Button(root,width = 30,
height = 8,
text='Measure',
fg='black',
bg="light grey", command = measure)
record_button.place(x = 350, y = 100, anchor = CENTER)
reading_display = Label(root, font=("Helvetica", 22), text = virtual_reading)
reading_display.place(x = 80, y =80)
tool_no_entry = Entry(root)
tool_no_entry.place(x = 120, y = 250, anchor=CENTER)
tool_no_entry.focus_set()
root.bind("<Return>", measure)
root.mainloop()
</code></pre>