lambda函数在Tkinter中的一个应用
来源:互联网 发布:mysql 查看阻塞 编辑:程序博客网 时间:2024/06/17 02:19
一直不太了解Python中lambda函数的作用。最近要获取Tkinter中的输入数据,发现了lambda的一个妙用。
我用Tkinter来生成一个GUI界面。在其中的Text控件中输入数据,点击Send按钮后,获取输入数据到一个deque中。界面如下:
在createWidgets函数中生成TextBox跟Send按钮:
def createWidgets(self): self.msgBox = tk.Text(self) self.msgBox.grid(row=0) self.sendButton = tk.Button(self, text='Send') self.sendButton.grid(row=1)
我想通过点击Send按钮去触发文本框的取值,并放到一个deque中。于是写了一个取值函数,并意图bind到send按钮上的单击事件。
def sendButtonAction(self, event, msgQueue): msg = self.msgBox.get("1.0", 'end-1c') msgQueue.append(msg)
在绑定到Send按钮的时候遇到问题, 因为bind函数只接受方法类型的参数,如何将msgQueue这个参数传入sendButtonAction函数?一般使用bind(eventDescription, functionName)
这样的格式。如果用第二个参数写成functionName(parameters)
那么调用的就不是一个方法了,而是方法的执行结果。
幸好有lambda表达式,因为它实现的是一个方法。所以在createWidgets函数中这样实现bind。
self.sendButton.bind('<Button-1>', lambda event, msgQueue=self.msgQueue: self.sendButtonAction(event, msgQueue))
通过这个实现加深了对lambda的了解。相信后面的开发过程中还会用到这个神奇的表达式。
阅读全文
0 0
- lambda函数在Tkinter中的一个应用
- python3 lambda 表达式以及在map函数中的应用
- lambda在C++中的应用
- Lambda在Comparator中的应用
- 理解lambda在linq中的应用
- Lambda表达式在linq中的应用
- Lambda表达式在Android中的应用
- Lambda表达式在Android开发中的应用
- java8 lambda表达式在集合中的应用
- lambda 函数在C++中的用法
- lambda函数的应用
- Java 8的Lambda及其在Android 开发中的应用
- python中的lambda函数
- python中的lambda函数
- Django中的lambda函数
- python中的lambda函数
- python中的lambda函数
- C++11 Lambda的变量捕获和Lambda在Qt中的应用
- Java 单元测试中的多线程无故退出
- 数学之美------“文字与数学”的冷知识
- vue引入bootstrap——webpack
- Spring @Profile标签使用:
- GBK转UTF-8时,奇数个中文会乱码,偶数个中文不会乱码
- lambda函数在Tkinter中的一个应用
- @TransactionConfiguration过时与替代写法
- java多线程知识补充
- MySQL内核技术之“SQL语法修改”
- AbstractTransactionalJUnit4SpringContextTests回滚
- HDU—6168(Numbers)
- Qt 第6章 布局管理(2) 分组布局 学习笔记
- 高三暑假随想
- jsp基础