加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Tkinter绑定问题

发布时间:2020-12-20 12:26:43 所属栏目:Python 来源:网络整理
导读:我有这样的事情: from Tkinter import *root = Tk()root.title("Test")def _quit(): root.destroy()m = Menu(root)root.config(menu=m)fm = Menu(m,tearoff=0)m.add_cascade(label="File",menu=fm)fm.add_command(label="Quit",command=_quit,accelerator='
我有这样的事情:

from Tkinter import *

root = Tk()
root.title("Test")

def _quit():
    root.destroy()

m = Menu(root)
root.config(menu=m)

fm = Menu(m,tearoff=0)
m.add_cascade(label="File",menu=fm)
fm.add_command(label="Quit",command=_quit,accelerator='Ctrl+Q')

root.bind('<Control-Q>',_quit())
root.bind('<Control-q>',_quit())

root.mainloop()

我的问题是:
“为什么总是被称为_quit()?”

解决方法

当您与Tkinter绑定时,通常不会调用您想要绑定的函数.

你应该使用这条线

root.bind('<Control-Q>',_quit)

代替

root.bind('<Control-Q>',_quit())

注意_quit背后缺少括号.

以下代码应该有效.

from Tkinter import *

root = Tk()
root.title("Test")

def _quit(event):
    root.destroy()

m = Menu(root)
root.config(menu=m)

fm = Menu(m,command=lambda: _quit(None),_quit)
root.bind('<Control-q>',_quit)

root.mainloop()

编辑:

哎很抱歉,我只在菜单栏中运行了测试退出关键字命令的代码.不是绑定的键命令.在为Tkinter进行绑定时,我非常确定大多数GUI工具包,调用函数时的绑定插入和事件参数.但是,Tkinter命令关键字参数不典型地插入事件.所以你必须通过让命令关键字参数“人工”插入一个无参数的事件(lambda:_quit(None))来妥协.这允许您在两种方案中使用一个功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读