首页 > 编程语言 >Python基础入门学习笔记 067 GUI的终极选择:Tkinter4

Python基础入门学习笔记 067 GUI的终极选择:Tkinter4

时间:2023-08-23 11:46:13浏览次数:46  
标签:10 067 Python GUI 输入框 偏移 grid e1 row

实例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

相关文章

  • Python基础入门学习笔记 068 GUI的终极选择:Tkinter5
    Listbox组件如果需要提供选项给用户选择,单选可以用Radiobutton组件,多选可以用Checkbutton,如果提供的选项非常多,可以考虑使用Listbox组件。Listbox是以列表的形式显示出来,并支持滚动条操作。实例1:1fromtkinterimport*23root=Tk()#创建主窗口45theLB=Listb......
  • Python基础入门学习笔记 069 GUI的终极选择:Tkinter6
    Text组件Text(文本)组件用于显示和处理多种任务。虽然该组件的主要目的是显示多行文本,但它常常也被用于作为简单的文本编辑器和网页浏览器使用。实例1:插入内容1fromtkinterimport*23root=Tk()4text=Text(root,width=30,height=2)5text.pack()6#INSERT......
  • Python基础入门学习笔记 066 GUI的终极选择:Tkinter3
    实例1:Checkbutton组件1fromtkinterimport*23root=Tk()4#需要一个Tkinter变量,用于表示该按钮是否被选中5v=IntVar()6c=Checkbutton(root,text="测试一下",variable=v)78c.pack()9#如果被选中,那么变量v被赋值为1,否则为010#可以用个Label......
  • Pybind11:使用C++编写Python模块
    放假摆了一周了。看论文实在不是什么有意思的活。这两天研究了一下Pybind11的用法。使用C/C++和Python混合编程的想法很早就有了,在大一的一次比赛时曾经实践过(虽然不是我写的),当时获得了比较显著的性能提升。但是当时用的是Swig,据队友说Swig对于NumPy的支持极为阴间,当时调试花了好......
  • Python基础入门学习笔记 064 GUI的终极选择:Tkinter
    >>>importtkinter #Tkinter是python默认的GUI库,导入Tkinter模块>>> 实例1:1importtkinterastk23root=tk.Tk()#创建一个主窗口,用于容纳整个GUI程序4root.title("FishCDemo")#设置主窗口对象的标题栏56#添加一个Label组件,可以显示文本、图标或者图......
  • Python基础入门学习笔记 065 GUI的终极选择:Tkinter2
    实例1:Label组件显示文字与gif图片1#导入tkinter模块的所有内容2fromtkinterimport*34#创建主窗口5root=Tk()6#创建一个文本Label对象,文字为左对齐,离左边边框距离为107textLabel=Label(root,8text="您下载的影片含有未成年人......
  • Python基础入门学习笔记 048 魔法方法:迭代器
    迭代的意思类似于循环,每一次重复的过程被称为一次迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。提供迭代方法的容器称为迭代器(如序列(列表、元组、字符串)、字典等)。对一个容器对象调用iter()就得到它的迭代器,调用next()迭代器就会返回下一个值。入托迭代器没......
  • Python基础入门学习笔记 049 乱入:生成器
    所谓协同程序,就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。生成器可以暂时挂起函数,并保留函数的局部变量等数据,然后在再次调用它的时候,从上次暂停的位置继续执行下去。一个函数中如果有yield语句,则被定义为生成器。实例1:......
  • Python基础入门学习笔记 050 模块:模块就是程序
    什么是模块•容器->数据的封装•函数->语句的封装•类->方法和属性的封装•模块->模块就是程序命名空间爱的宣言:世界上只有一个名字,使我这样牵肠挂肚,像有一根看不见的线,一头牢牢系在我心尖上,一头攥在你手中,这个名字就叫做鱼C工作室计算机一班的小花……导入模块•......
  • Python学习 -- 类的继承
    类继承是面向对象编程中的重要概念,它允许我们创建一个新的类,通过继承已有的类的属性和方法,从而实现代码的重用和扩展。Python作为一门面向对象的编程语言,提供了强大而灵活的类继承机制。本篇博客将深入探讨Python中类继承的概念,通过详细的代码实例演示其用法。基本的类继承首先,让我......