鱼C论坛

 找回密码
 立即注册
查看: 979|回复: 2

[已解决]求助!!!!!!!!!!!!!tkinter 里面的菜单,为什么一跑代码,就把回调函数运行了??

[复制链接]
发表于 2019-6-13 19:09:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ebaolzh 于 2019-6-13 19:24 编辑
  1. from tkinter import *

  2. root =Tk()

  3. def callback():
  4.     print('11')
  5.    
  6. #m = Menu(root)
  7. #m.add_command(label = '11',command = callback())
  8. #root.config(menu=m)

  9. m2 =Menu()

  10. openVar = IntVar()
  11. saveVar = IntVar()


  12. fm= Menu(m2,tearoff = 0)
  13. fm.add_checkbutton(label= '打开',command =callback(),variable = openVar )
  14. fm.add_checkbutton(label= '保存',command =callback(),variable = saveVar )

  15. m2.add_cascade(label= '文件',menu = fm)

  16. root.config(menu=m2)

  17. mainloop()
复制代码



一运行,直接打印11 11,按了按钮又不打印了,,,求解释,,(抄下来的码都能跑出其他效果 汗啊)
最佳答案
2019-6-13 19:24:14
>>> def callback():
    print('11')

   
>>> callback()
11

这样是不是运行了。tkinter中也是一样。所以这里就要弄来中转来调用callback
command =lambda:callback() # 其实这里也是匿名函数的地址(函数地址)

command =callback # 给函数地址
也可
def c():
    callback()

command =c # 同样也是给函数地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-13 19:24:14 | 显示全部楼层    本楼为最佳答案   
>>> def callback():
    print('11')

   
>>> callback()
11

这样是不是运行了。tkinter中也是一样。所以这里就要弄来中转来调用callback
command =lambda:callback() # 其实这里也是匿名函数的地址(函数地址)

command =callback # 给函数地址
也可
def c():
    callback()

command =c # 同样也是给函数地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-14 09:07:22 | 显示全部楼层
command =callback()这里把括号去掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 09:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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