为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

月关宝盒 2019-05-10 15:14:00
importtkinterastkwindow=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():passnum=1#数字键盘,可循环显示的forjinrange(3):foriinrange(3):m=0+(i)*90n=115+(j)*80b=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=0a=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=0forpin['+','-','*','/']:e=tk.Button(frm_3,text=p,bg='Gainsboro',font=('20')).place(x=270,y=115+q*80,width=90,height=80)q=q+1window.mainloop()
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

来看下这个文档:http://effbot.org/tkinterbook...
研究下事件相关。然后你会发现【鼠标左键单击】【鼠标左键双击】等等的事件~
defget(*args):
returnargs
b=tk.Button(frm_2,text=num,bg='WhiteSmoke',font=('Arial','20'))
b.bind('',func=get)
                            
查看完整回答
反对 回复 2019-05-10
?
皈依舞

TA贡献1851条经验 获得超3个赞

翻山越岭找到了解决办法,把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"])
                            
查看完整回答
反对 回复 2019-05-10
  • 2 回答
  • 0 关注
  • 2459 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信