|
|
发表于 2023-5-28 17:34:40
|
显示全部楼层
这个错误是由于在绑定 <<ComboboxSelected>> 事件时,传递了一个 event 参数,而在 go 函数中未处理该参数,导致出现类型不匹配的错误。
要解决这个问题,可以在 go 函数定义时为 n 参数添加默认值 None,然后进行判断。如果 n 值为 None,说明是通过选中 com 控件触发的函数,此时可以从 com 控件获取选中的值,进行平方操作;否则说明是通过点击按钮触发的函数,此时直接对 n 进行双倍操作即可。
修改后的代码如下所示:
- from tkinter import *
- from tkinter import ttk
- def go(n=None, event=None):
- if n is None:
- n = int(com.get())
- print(n ** 2)
- else:
- print(n * 2)
- root=Tk()
- com=ttk.Combobox(root,width=10)
- com.pack()
- com['values']=[x for x in range(1,11)]
- com.current(0)
- com.bind('<<ComboboxSelected>>',go)
- bnt=Button(root,text='Run',command=lambda x=10: go(x))
- bnt.pack()
- root.mainloop()
复制代码
这样修改后,无论是从 com 控件触发还是从按钮控件触发,都会调用同一个 go 函数,并且输出结果都是正确的。 |
|