python 批量添加的button 使用同一点击事件的方法
python批量添加的button使用同一点击事件根据传递的参数进行区分。
defclear_text(): print'我只是个清空而已' defclear_text(index): print'我只是个清空而已'+str(index) button=Button(framet_title,text='清空',command=clear_text)
这样去设置,单个按钮对应单个点击事件没有问题的
如果你是
foriinRange(10): button=Button(framet_title,text='清空',command=clear_text_list(i))
这样搞的话当你程序启动的时候回调函数就会直接执行,点击按钮是没有任何反应的,使用button.bind的方式几乎是一样的
这种写法如果是在JAVACHTMLC++是没有任何问题的。请原谅我是个做android开发程序员。我最纳闷的是我明明是每个按钮都给他单独设置了回调。为什么会提前回调,并且点击的时候没有任何反应。
foriinRange(10): button=Button(framet_title,text='清空',command=lambda:clear_text_list(i))
如果在添加lambda程序启动是不会回调了。但是每次点击获得的索引还是最后一个。
Google了一圈(说实话我不知道用什么关键字。。。)http://stackoverflow.com/上面我尝试pythonbuttonscommandlambda
找到了http://stackoverflow.com/questions/20596892/disabling-buttons-after-click-in-tkinter
正确的姿势是
forindexinrange(9): n=letters[index] button=Button(root,bg="White",text=n,width=5,height=1,relief=GROOVE, command=lambdaindex=index,n=n:appear(index,n))
看到答案之后开始找答案对的理由吧他是用lambda表达式做成了个点击事件的集合正好对应button的集合。
以上这篇python批量添加的button使用同一点击事件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。