callback()缺少1个必需的位置参数:“事件”

时间:2018-08-11 14:07:13

标签: python tkinter

我正在尝试创建一个Tkinter-GUI来选择要分析的数据点。此GUI将成为更大的Python例程的一部分,该例程会减少数据。

数据点按顺序编号(#1,#2,#3,...),每个数据点都有一个复选按钮。单击一个按钮后,应将相应的数据点编号添加到列表中,例如[1、3、7]。我编写的代码如下,

"""
GRAPHICAL SELECTION OF DATA POINTS FOR ANALYSIS

""" 
# create an empty list of data points
selection = []

# import libraries and modules
from tkinter import *

# create parent window
parent = Tk()
parent.title('SELECT DATA POINTS FOR ANALYSIS')


# create callback functions
def callback1(event):
    selection.append(1) 

def callback2(event):
    selection.append(2)

def callback3(event):
    selection.append(3) 

def callback4(event):
    selection.append(4)

def callback5(event):
    selection.append(5)


# create list call
Label(parent,
      text="Check data points to be analyzed:",
      font=('arial', 12, 'bold')).grid(row=1,column=0,columnspan=11,sticky='w')

# create checkbuttons
button1 = Checkbutton(parent,text='#1',command=callback1) # create widget
button1.grid(row =2,column=0,columnspan=4,sticky='w') # position widget
button1.bind("<Button-1>",callback) # bind widget to left mouse click

button2 = Checkbutton(parent,text='#2',command=callback2)
button2.grid(row =3,column=0,columnspan=4,sticky='w')
button2.bind("<Button-1>",callback)

button3 = Checkbutton(parent,text='#3',command=callback3)
button3.grid(row =4,column=0,columnspan=4,sticky='w')
button3.bind("<Button-1>",callback)

button4 = Checkbutton(parent,text='#4',command=callback4)
button4.grid(row =5,column=0,columnspan=4,sticky='w')
button4.bind("<Button-1>",callback)

button5 = Checkbutton(parent,text='#5',command=callback5)
button5.grid(row =6,column=0,columnspan=4,sticky='w')
button5.bind("<Button-1>",callback)


parent.mainloop()

print("selection =",selection)

我已经创建了复选按钮并将它们绑定到相应的回调函数。显然,该事件(单击鼠标左键)也已正确指定,即“”。

运行此代码时,将正确创建并显示GUI。但是,单击任何按钮时,我都会收到以下错误消息:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\ridim\Anaconda3\lib\tkinter\__init__.py", line 1558, in __call__
    return self.func(*args)
TypeError: callback1() missing 1 required positional argument: 'event'

我是Tkinter的新手,所以我不知道自己在做什么错。语法回调显然是正确的,并且在函数定义中出现了“事件”一词。

如果有人能告诉我我的代码有什么问题,我将不胜感激。另外,我想问一下是否有一种更有效的方法来设置回调函数。也许是带有“ if”语句的单个回调函数。

非常感谢,

Carvalho

1 个答案:

答案 0 :(得分:0)

问题在于,单击按钮会导致调用callback1(),而不是callback1(something)。尝试删除event参数。