猿问

python如何获取tkinter组件的名称?比如按下多个Button中的一个,返回这个被按下的Button的text?

importtkinterastk
window=tk.Tk()
window.title('计算器')
window.geometry('360x435')
window.attributes("-alpha",0.95)
window.resizable(0,0)#窗口大小固定,不能缩放
var=tk.StringVar()
frm_1=tk.Frame(window,width=360,height=115,bg='CadetBlue').place(x=0,y=0,anchor=tk.NW)#数字显示区
frm_2=tk.Frame(window,width=270,height=240,bg='DarkSeaGreen').place(x=0,y=115,anchor=tk.NW)#数字键盘
frm_3=tk.Frame(window,width=90,height=320,bg='Beige').place(x=270,y=115,anchor=tk.NW)#加减乘除
frm_4=tk.Frame(window,width=270,height=80,bg='CadetBlue').place(x=0,y=355,anchor=tk.NW)#不可循环输出的
var_result=tk.StringVar()
var_dian=tk.StringVar()
var_dian.set('.')
defname(u):
u='var'+str(u)
returnu
#数字显示区
I=tk.Entry(frm_1,textvariable=var_result,font=('Arial',40),bg='grey')
I.place(x=0,y=0,width=360,height=115)
#获取数字显示区的文字
#函数部分
#计算结果的
defshow_result():
result=I.get()
print(eval(result))
defdelete():
f.delete(1.0,tk.END)
defget():
pass
num=1
#数字键盘,可循环显示的
forjinrange(3):
foriinrange(3):
m=0+(i)*90
n=115+(j)*80
b=tk.Button(frm_2,text=num,bg='WhiteSmoke',font=('Arial','20'),command=get)
b.place(x=m,y=n,width=90,height=80)
num=num+1
#数字键盘,不可循环显示的
v=0
a=tk.Button(frm_4,textvariable=var_dian,bg='Gainsboro',font=('20')).place(x=0,y=355,width=90,height=80)
b=tk.Button(frm_4,text='=',bg='Gainsboro',font=('20'),command=show_result).place(x=180,y=355,width=90,height=80)
f=tk.Button(frm_4,text='0',bg='WhiteSmoke',font=('Arial','20')).place(x=90,y=355,width=90,height=80)
#加减乘除
q=0
forpin['+','-','*','/']:
e=tk.Button(frm_3,text=p,bg='Gainsboro',font=('20')).place(x=270,y=115+q*80,width=90,height=80)
q=q+1
window.mainloop()
月关宝盒
浏览 2460回答 2
2回答

撒科打诨

来看下这个文档:http://effbot.org/tkinterbook...研究下事件相关。然后你会发现【鼠标左键单击】【鼠标左键双击】等等的事件~defget(*args):returnargsb=tk.Button(frm_2,text=num,bg='WhiteSmoke',font=('Arial','20'))b.bind('',func=get)

皈依舞

翻山越岭找到了解决办法,把button放到数组里边就可以了array=[tk.Button(frm_4,text='=',bg='Gainsboro',font=('20'),command=get_result)]foriinarray:print(type(i))i.place(x=180,y=355,width=90,height=80)print(i.cget("text"))print(i["text"])
随时随地看视频慕课网APP

相关分类

Python
我要回答