06-tkinter学习之变量类别学习
变量一共有4个类别
IntVar():整型变量,默认是0。
DoubleVar():浮点型变量,默认是0.0
StringVar():字符串变量,默认是空
BooleanVar():布尔型变量,True是1,False是0。
41-set()和get()用法:
from tkinter import *win=Tk()def view(): global Message if Message==False: Message=True x.set("tkinter") else: Message=False x.set("")Message=Falsex=StringVar()label=Label(win,textvariable=x,fg="blue",bg="yellow",width=25,height=2)label.pack()button=Button(win,text="点击",command=view)button.pack()win.mainloop()
42-追踪trace()使用模式W,窗口同步显示输入内容:
from tkinter import *def callback(*args): print(x.get())win=Tk()x=StringVar()entry=Entry(win,textvariable=x)entry.pack(padx=5,pady=5)x.trace("w",callback)win.mainloop()
x.trace("w",callback)的第一个参数是模式,W代表当有执行写入时,就自动去执行callback函数,也可以自行取函数名称。这叫做变动追踪。当第一个参数为r时,表示执行读取,这时叫做读取追踪。
43-简易计算器的实现:
from tkinter import *win=Tk()def calculate(): result=eval(equ.get()) equ.set(equ.get()+"=\n"+str(result))def show(buttonString): content=equ.get() if content=="0": content="" equ.set(content+buttonString)def backspace(): equ.set(str(equ.get()[:-1]))def clear(): equ.set("0")equ=StringVar()equ.set("0")label=Label(win,width=25,height=2,relief="raised",anchor=SE,textvariable=equ)label.grid(row=0,column=0,columnspan=4,padx=5,pady=5)clearbutton=Button(win,text="C",width=5,fg="blue",command=clear)clearbutton.grid(row=1,column=0)Button(win,text="DEL",width=5,command=backspace).grid(row=1,column=1)Button(win,text="%",width=5,command=lambda:show("%")).grid(row=1,column=2)Button(win,text="/",width=5,command=lambda:show("/")).grid(row=1,column=3)Button(win,text="7",width=5,command=lambda:show("7")).grid(row=2,column=0)Button(win,text="8",width=5,command=lambda:show("8")).grid(row=2,column=1)Button(win,text="9",width=5,command=lambda:show("9")).grid(row=2,column=2)Button(win,text="*",width=5,command=lambda:show("*")).grid(row=2,column=3)Button(win,text="4",width=5,command=lambda:show("4")).grid(row=3,column=0)Button(win,text="5",width=5,command=lambda:show("5")).grid(row=3,column=1)Button(win,text="6",width=5,command=lambda:show("6")).grid(row=3,column=2)Button(win,text="-",width=5,command=lambda:show("-")).grid(row=3,column=3)Button(win,text="1",width=5,command=lambda:show("1")).grid(row=4,column=0)Button(win,text="2",width=5,command=lambda:show("2")).grid(row=4,column=1)Button(win,text="3",width=5,command=lambda:show("3")).grid(row=4,column=2)Button(win,text="+",width=5,command=lambda:show("+")).grid(row=4,column=3)Button(win,text="0",width=12,command=lambda:show("0")).grid(row=5,column=0,columnspan=2)Button(win,text=".",width=5,command=lambda:show(".")).grid(row=5,column=2)Button(win,text="=",width=5,bg="yellow",command=lambda:calculate()).grid(row=5,column=3)win.mainloop()
在程序中使用lambda的目的是简化设计,因为数字按钮与算数表达式按钮使用相同的函数。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。