Tkinter -- TypeError: retrieve_input() 需要 1 个参数(给了 0 个)

0 投票
1 回答
701 浏览
提问于 2025-04-18 01:15

我在使用选项按钮、复选框和文本区域时遇到了错误,取值也很困难。

错误信息:TypeError: retrieve_input() 这个函数需要一个参数,但我没有给任何参数。还有一个错误是:NameError: checkCmd 这个名字没有被定义。

#!C:/Python27/python.exe

from Tkinter import *
import ImageTk, Image

def retrieve_input(event):
  getter = text.get(text)

  getterV = v.get(v)

  getterChk = chkvar.get(chkvar)
  root.destroy()

root = Tk()
root.title('HADOUKEN!')

text = Text(root, height=16, width=40)
scroll = Scrollbar(root, command=text.yview)

text.configure(yscrollcommand=scroll.set)

text.grid(sticky=E)
scroll.grid(row=0,column=1,sticky='ns')

text.focus()
text.bind(retrieve_input)

v = ""
chkvar = IntVar()
chkvar.set(0)
c = Checkbutton(root, text="CaseIt", variable=chkvar)
c.grid(row=1,column=0,sticky=W)

radio1 = Radiobutton(root, text="Src", variable=v, value=1)
radio1.grid(row=1,column=0)
radio1.focus()

radio2 = Radiobutton(root, text="Dst", variable=v, value=2)
radio2.grid(row=2,column=0)

b1 = Button(root, text="Submit", command=retrieve_input)
b1.grid(row=1, column=2)

img = ImageTk.PhotoImage(Image.open("Hadoken.gif"))
panel = Label(root, image = img)
panel.grid(row=0, column=2)


root.mainloop()


if checkCmd.get() == 0:
  print "yes"
else:
  print "no"

1 个回答

0

当你把一个函数当作命令的值来用时,这个命令不会像绑定那样自动传入一个事件对象。你的函数需要一个参数,但按钮没有给它传,所以就出错了。

至于说checkCmd未定义的错误……这正是问题所在。你并没有定义任何叫这个名字的东西。

调试的第一条规则:要相信错误信息所说的是真的。

撰写回答