实例1:
1 from tkinter import * 2 3 root = Tk()#创建主窗口 4 e = Entry(root)#在主窗口中插入输入框 5 e.pack(padx = 20,pady = 20) 6 7 e.delete(0,END)#清空输入框 8 e.insert(0,"默认文本...")#设置输入框内容 9 10 mainloop()
实例2:
1 from tkinter import * 2 3 def button1_show(): 4 print("作品:《%s》" % e1.get())#将e1.get()中得到的输入框1的内容格式化为字符串 5 print("作者:%s" % e2.get()) 6 7 root = Tk()#创建主窗口 8 9 Label(root,text = "作品:",padx = 20,pady = 10).grid(row=0,column=0)#第1行第1列,偏移是相对于当前操作组件的相邻x轴或y轴的偏移距离 10 Label(root,text = "小甲鱼:").grid(row=1,column=0)#第1行第0列 11 12 13 e1 = Entry(root)#在主窗口中插入输入框,文本框的内容通过e1调用 14 e2 = Entry(root)#在主窗口中插入输入框 15 e1.grid(row=0,column=1,padx=10)#x方向偏移是相对于"作品"的x方向偏移的;y方向偏移表示此输入框与y方向相邻物体或边框之间偏移的距离(y方向偏移) 16 e2.grid(row=1,column=1,padx=10,pady=20)#x方向偏移是相对于"小甲鱼"的x方向偏移的;y方向偏移表示此输入框与y方向相邻上下物体或边框偏移的距离(y方向偏移) 17 18 19 #加两个按钮 20 Button1 = Button(root,text = "获取信息",command = button1_show)\ 21 .grid(row = 2,column = 0,sticky = W,padx = 10,pady=10)#加入反斜杠可实现分行编辑,方位设置为最西边(即靠左) 22 Button2 = Button(root,text = "退出",command = root.quit).grid(row = 2,column = 1,sticky = E,padx=10)#方位设置为最东边(即靠右) 23 24 #注:双击打开文件时退出才有效 25 e1.delete(0,END)#清空输入框 26 e1.insert(0,"零基础入门学习Python")#设置输入框内容 27 28 e2.delete(1,END)#清空输入框 29 e2.insert(1,"小甲鱼")#设置输入框内容 30 31 mainloop()
按下获取信息
更改输入框数据,然后按下获取信息
实例2:账号密码设置
1 from tkinter import * 2 3 def show(): 4 print("作品:《%s》" % e1.get())#将e1.get()中得到的输入框1的内容格式化为字符串 5 print("作者:%s" % e2.get()) 6 e1.delete(0,END)#清空输入框1 7 e2.delete(0,END)#清空输入框2 8 9 root = Tk()#创建主窗口 10 #Tkinter总共提供了三种布局组件的方法:pack()、grid()和place() 11 #grid()方法允许你用表格的形式来管理组件的位置 12 #row选项代表行,coulumn选项代表列 13 #row = 1,column = 2表示第二行第三列(0表示第一行) 14 15 Label(root,text = "账号:").grid(row=0)#第1行 16 Label(root,text = "密码:").grid(row=1)#第2行 17 v1 = StringVar() 18 v2 = StringVar() 19 20 e1 = Entry(root,textvariable = v1)#在主窗口中插入输入框,文本框的内容通过e1调用 21 e2 = Entry(root,textvariable = v2,show="*")#在主窗口中插入输入框 22 e1.grid(row=0,column=1,padx=10,pady=5)#x方向偏移是相对于"作品"的x方向偏移的;y方向偏移表示此输入框与y方向相邻物体或边框之间偏移的距离(y方向偏移) 23 e2.grid(row=1,column=1,padx=10,pady=5)#x方向偏移是相对于"小甲鱼"的x方向偏移的;y方向偏移表示此输入框与y方向相邻上下物体或边框偏移的距离(y方向偏移) 24 25 26 #可以使用sticky选项来设置组件的位置 27 #使用N、E、S、W以及他们的组合NE、SE、SW、NW来表示方位 28 29 #加两个按钮 30 Button(root,text = "芝麻开门",command = show)\ 31 .grid(row = 2,column = 0,sticky = W,padx = 10,pady=5)#加入反斜杠可实现分行编辑,方位设置为最西边(即靠左) 32 Button(root,text = "退出",command = root.quit).grid(row = 2,column = 1,sticky = E,padx=10)#方位设置为最东边(即靠右) 33 34 mainloop()
实例3:验证函数validatecommand
1 from tkinter import * 2 3 master = Tk() 4 5 def test(): 6 if e1.get() == "小甲鱼": 7 print("正确!") 8 return True 9 else: 10 print("错误!") 11 e1.delete(0, END) 12 return False 13 14 v = StringVar() 15 16 #focusout表示Entry组件失去焦点的时候验证,调用validatecommand的test函数 17 18 e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test) 19 e2 = Entry(master) 20 e1.pack(padx=10, pady=10) 21 e2.pack(padx=10, pady=10) 22 23 mainloop()
实例4:invalidcommand函数
1 from tkinter import * 2 3 master = Tk() 4 5 def test(): 6 if e1.get() == "小甲鱼": 7 print("正确!") 8 return True 9 else: 10 print("错误!") 11 e1.delete(0, END) 12 return False 13 14 def test2(): 15 print("我被调用了...") 16 17 v = StringVar() 18 19 #focusout表示Entry组件失去焦点的时候验证,调用validatecommand的test函数 20 #invalidcommand选项指定的函数只有在validatecommand的返回值为False的时候才被调用 21 e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test,\ 22 invalidcommand=test2) 23 e2 = Entry(master) 24 e1.pack(padx=10, pady=10) 25 e2.pack(padx=10, pady=10) 26 27 mainloop()
实例5:验证函数提供一些额外的选项
validatecommand(f,s1,s2,...)
其中,f是验证函数名,s1,s2,s3是额外的选项,这些选项会作为参数一次传给f函数。在此之前,需要调用register()方法将验证函数包装起来。
1 from tkinter import * 2 3 master = Tk() 4 5 v = StringVar() 6 7 def test(content, reason, name): 8 if content == "小甲鱼": 9 print("正确!") 10 print(content, reason, name) 11 return True 12 else: 13 print("错误!") 14 print(content, reason, name) 15 return False 16 17 testCMD = master.register(test) 18 e1 = Entry(master, textvariable=v, validate="focusout", \ 19 validat 20 ecommand=(testCMD, '%P', '%v', '%W')) 21 e2 = Entry(master) 22 e1.pack(padx=10, pady=10) 23 e2.pack(padx=10, pady=10) 24 25 mainloop()
实例6:设计一个 计算器
1 from tkinter import * 2 #计算函数 3 def calc(): 4 result = int(v1.get())+int(v2.get())#强制转换为整型 5 v3.set(result)#将result中的内容放到v3中 6 7 #创建窗口 8 root = Tk() 9 #创建窗口中的一个frame框架 10 frame = Frame(root) 11 #设置框架位置并显示 12 frame.pack(padx = 10,pady = 10) 13 14 v1 = StringVar() 15 v2 = StringVar() 16 v3 = StringVar() 17 18 #注意,这里不能使用e1.get()或者v1.get()来获取输入的内容,因为validate选项 19 #指定为“key"的时候,有任何输入操作都会被拦截到这个函数中 20 #也就是说先拦截,只有这个函数返回True,那么输入的内容才会到变量里去 21 #所以要用%P来获取最新的输入框内容 22 def test(content): 23 if content.isdigit(): 24 return True 25 else: 26 return False 27 28 #创建三个Entry组件 29 testCMD = frame.register(test) 30 #创建2个输入组件,输入的数据赋值给v1、v2 31 e1 = Entry(frame, textvariable=v1,width=10, validate="key",\ 32 validatecommand=(testCMD, '%P')) 33 e2 = Entry(frame, textvariable=v2,width=10, validate="key",\ 34 validatecommand=(testCMD, '%P')) 35 #一个输出组件,设置为只读模式(readonly),v3的数据赋值给textvariable进行输出显示 36 e3 = Entry(frame, textvariable=v3,width=10, validate="key",\ 37 validatecommand=(testCMD, '%P'),state="readonly") 38 #位置设置 39 e1.grid(row=0,column=0,padx=10,pady=10) 40 e2.grid(row=0,column=2,padx=10) 41 e3.grid(row=0,column=4,padx=10) 42 43 #创建两个Label组件 44 Label(frame,text="+").grid(row=0,column=1) 45 Label(frame,text="=").grid(row=0,column=3) 46 47 #创建一个按钮,宽度为10 48 button=Button(frame,text="计算结果",width=10,command=calc) 49 button.grid(row=1,column=2,pady=10) 50 51 mainloop()标签:10,067,Python,GUI,输入框,偏移,grid,e1,row From: https://www.cnblogs.com/ybqjymy/p/17650779.html