鱼C论坛

 找回密码
 立即注册
查看: 4449|回复: 5

[已解决]函数调用

[复制链接]
发表于 2023-5-28 17:34:40 | 显示全部楼层
这个错误是由于在绑定 <<ComboboxSelected>> 事件时,传递了一个 event 参数,而在 go 函数中未处理该参数,导致出现类型不匹配的错误。

要解决这个问题,可以在 go 函数定义时为 n 参数添加默认值 None,然后进行判断。如果 n 值为 None,说明是通过选中 com 控件触发的函数,此时可以从 com 控件获取选中的值,进行平方操作;否则说明是通过点击按钮触发的函数,此时直接对 n 进行双倍操作即可。

修改后的代码如下所示:

  1. from tkinter import *
  2. from tkinter import ttk

  3. def go(n=None, event=None):
  4.     if n is None:
  5.         n = int(com.get())
  6.         print(n ** 2)
  7.     else:
  8.         print(n * 2)

  9. root=Tk()
  10. com=ttk.Combobox(root,width=10)
  11. com.pack()
  12. com['values']=[x for x in range(1,11)]
  13. com.current(0)
  14. com.bind('<<ComboboxSelected>>',go)
  15. bnt=Button(root,text='Run',command=lambda x=10: go(x))
  16. bnt.pack()
  17. root.mainloop()
复制代码

这样修改后,无论是从 com 控件触发还是从按钮控件触发,都会调用同一个 go 函数,并且输出结果都是正确的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 18:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表