问题集
我想创建一个可以通过3个操作操作的Counter小部件:
tk.Entry-Textvariable
tk.Entry-Widget
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表达式的方向吗?
答案 0 :(得分:0)
好的,那不长。在lambdas附上了冒号之后我找到了这个问题。
counter = tk.IntVar()在全局版本中不起作用。 将它放入函数解决了它。
def printerCounterWidget():
[...]
counter=tk.IntVar() # removed "global counter"
[...]