我正在玩Tkinter并从底部构建一个计算器。尽可能地尝试和理解尽可能多的关于事件和图书馆的知识,尽我所能。Python&Tkinter - 按钮命令来设置标签文本变量问题
现在我正处在一个点,我只想让按钮将按钮上的值传递给顶部的标签。
我使用了for循环来创建大多数按钮以避免多余的代码,但现在唯一值被传递到标签中的文本变量是最后一项,'。',在我的按钮列表中,我是不知道这是为什么。有人可以帮忙吗?下面
代码:
from Tkinter import *
import Tkinter as tk
# main window
root = Tk()
root.title('Calculator')
# button set
buttons = ['1','2','3','4','5','6','7','8','9','0','+','-','/','*','.']
sum_value = StringVar()
# output window
output_window = tk.Label(root, textvariable=sum_value, width=20, height=2).grid(row=0, columnspan=3, sticky=(E,W))
# button creation
r=1
c=0
for i in buttons:
if c < 2:
bi = tk.Button(root, text = i, command = lambda: sum_value.set(i), padx = 5, pady = 3).grid(row = r, column = c, sticky = (N,S,E,W))
c += 1
else:
bi = tk.Button(root, text = i, command = lambda: sum_value.set(i), pady = 3).grid(row = r,column = c,sticky = (N,S,E,W))
r += 1
c = 0
# clear and equals button
clear = tk.Button(root,text='=',padx = 5, pady=3).grid(row=6,column=0,sticky=(N,S,E,W))
clear = tk.Button(root,text='CLEAR',padx = 5, pady=3).grid(row=6,column=1, columnspan = 2,sticky=(N,S,E,W))
root.mainloop()
他的代码已经在运行 – dsgdfg
@SDilmac如果它也在运行OP,他/她不会问这个问题,你不觉得吗? – nbro
@tobias_k太好了!感谢人 - 传奇! bi是我之前尝试过的东西的剩菜,意思是把它拿出来:-P .. – daansteraan