【发布时间】:2015-10-27 16:56:14
【问题描述】:
问题集
我想创建一个可以通过 3 个操作操作的 Counter 小部件:
- 通过编辑
tk.Entry-Widget内的数据编辑绑定tk.Entry-Textvariable - 通过单击条目右侧的
ttk.Button来增加变量 - 通过单击条目左侧的
ttk.Button来减小变量
当前代码
#!/usr/bin/env python2
# -*- encoding: utf-8 -*-
import Tkinter as tk
import ttk
counter=tk.IntVar()
def printerCounterWidget(master):
"""
This will specify the appearance of the PrintCounter
"""
#Create the UI
__frame = ttk.Frame(master)
__frame.grid()
global counter
####################################################################
ttk.Button(__frame, text="-", command=lambda: counter.set( counter.get() - 1 ) ).grid(row=0, column=0)
####################################################################
ttk.Entry(__frame, textvariable=counter).grid(row=0, column=1)
####################################################################
ttk.Button(__frame, text="+", command=lambda: counter.set( counter.get() + 1 ) ).grid(row=0, column=2)
####################################################################
if __name__=="__main__":
app=tk.Tk()
ttk.Label(app, text="printerCounterWidget").grid()
printerCounterWidget(app)
app.mainloop()
很遗憾,我(至少现在)没有设法让 lambda 表达式正常工作。
我确实知道当前调用永远不会像在声明时调用的那样工作。
有人可以指出正确设置 lambda 表达式的方向吗?
【问题讨论】:
-
你少了一个冒号:
lambda: counter... -
完全正确! sry4那个错字!我编辑了问题
-
你为什么在这里使用 lambda,而不是创建一个合适的函数? Lambda 使代码更难编写、阅读和维护。
-
Bryan:这个“小部件”应该稍后在 TkinterTreectrl 视图中使用。对于我来说,基于事件发送者的识别,我更喜欢 lambda 而不是正确的回调,在树中拥有 > 20 000 个数据集(行)需要太长时间。如果您知道一个合适的解决方案,我将很高兴:-)
标签: python button lambda tkinter