赞
踩
1、Button窗口部件实现点击时显示不同的文本
import tkinter as tk window = tk.Tk() # 创建一个窗口 window.title("tkinter project!") # 给窗口的可视化起名字 window.geometry('700x300') # 设定窗口的大小(长 * 宽) var = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hitfun函数的传出内容用以显示在标签上 label1 = tk.Label(window, textvariable=var, bg='green', fg='white', font=('楷体', 18), width=30, height=2) label1.pack() hit = False def hitfun(): global hit if hit == False: hit = True var.set("嘿嘿") else: hit = False var.set("哈哈") button1 = tk.Button(window, text="点一下试试看!", bg = "purple",font=('Arial', 12), width=15, height=1, command=hitfun) button1.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
运行结果:
第一次点击
第二次点击:
二、Entry窗口部件
说明:Entry是tkinter类中提供的的一个单行文本输入域,用来输入显示一行文本,收集键盘输入(类似 HTML 中的 text)。
2.1 创建一个登录界面
import tkinter as tk window = tk.Tk() # creat a window window.title("tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) account = tk.Entry(window, show=None, font=("楷体", 14)) # 明文显示 password = tk.Entry(window, show="*", font=("楷体", 14)) # 暗文显示 account.pack() password.pack() button = tk.Button(window, text="登录", fg="red") button.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
2.2指定位置插入输入的内容
import tkinter as tk window = tk.Tk() # creat a window window.title("tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) account = tk.Entry(window, show=None, font=("楷体", 14)) # 明文显示 account.pack() # 创建一个文本框 t = tk.Text(window, height=3) t.pack() # 在鼠标焦点处插入输入内容 def insert_point(): var = account.get() t.insert('insert', var) # 在文本框内容最后接着插入输入内容 def insert_end(): var = account.get() t.insert("end", var) button1 = tk.Button(window, text="在光标处插入内容", fg="red", command=insert_point) button1.pack() button2 = tk.Button(window, text="在最后插入内容", fg="red", command=insert_end) button2.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
在光标处插入内容
在末尾插入内容
三、Listbox窗口部件
说明:Text是tkinter类中提供的的列表框部件,显示供选方案的一个列表。listbox能够被配置来得到radiobutton或checklist的行为。
import tkinter as tk window = tk.Tk() # creat a window window.title("tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) var1 = tk.StringVar() # 创建变量,用var1用来接收鼠标点击具体选项的内容 label = tk.Label(window, textvariable=var1, bg='green', font=('楷体', 14), width=3) label.pack() # 创建Listbox并为其添加内容 var2 = tk.StringVar() a = (1, 2, 3, 4, 5) var2.set(a) lb = tk.Listbox(window, listvariable=var2) # 将var2的值赋给Listbox lb.pack() ''' lb.insert(1, 'first') # 在第一个位置加入'first'字符 lb.insert(2, 'second') # 在第二个位置加入'second'字符 lb.delete(2) # 删除第二个位置的字符 ''' # 创建一个方法用于按钮的点击事件 def print_selection(): value = lb.get(lb.curselection()) # 获取当前选中的文本 var1.set(value) button = tk.Button(window, text='显示选择', width=10, height=2, command=print_selection) button.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
四、Radiobutton窗口部件
说明:
1、Radiobutton:代表一个变量,它可以有多个值中的一个。点击它将为这个变量设置值,并且清除与这同一变量相关的其它radiobutton。
2、在有一个很多内容选项组成的选项列表提供用户选择时会用到,用户一次只能选择其中一个,不能多选。
import tkinter as tk window = tk.Tk() # creat a window window.title("Tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) var = tk.StringVar() # 定义一个var用来将radiobutton的值和Label的值联系在一起 label = tk.Label(window, bg="green", width=12, height=2, text="empty", font=('楷体', 15)) label.pack() # 定义选项触发函数功能 def print_selection(): label.config(text='你已选择'+var.get()) # 创建三个radiobutton选项,其中variable=var, value='A'的意思就是,当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable a = tk.Radiobutton(window, text='A', variable=var, value='A', command=print_selection) a.pack() b = tk.Radiobutton(window, text='B', variable=var, value='B', command=print_selection) b.pack() c = tk.Radiobutton(window, text='C', variable=var, value='C', command=print_selection) c.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
结果显示:
五、 Checkbutton窗口部件
说明:代表一个变量,它有两个不同的值。点击这个按钮将会在这两个值间切换,选择和取消选择。
在这里插入代码片import tkinter as tk window = tk.Tk() # creat a window window.title("Tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) label = tk.Label(window, bg='yellow', width=20, text="请选择") label.pack() def print_selection(): if (var1.get() == 1) & (var2.get() == 0): # 如果选中第一个选项,未选中第二个选项 label.config(text='我只喜欢python ') elif (var1.get() == 0) & (var2.get() == 1): # 如果选中第二个选项,未选中第一个选项 label.config(text='我只喜欢c++') elif (var1.get() == 0) & (var2.get() == 0): # 如果两个选项都未选中 label.config(text='我都不喜欢') else: label.config(text='两个我都喜欢') # 如果两个选项都选中 var1 = tk.IntVar() # 定义var1和var2整型变量用来存放选择行为返回值 var2 = tk.IntVar() # 传值原理类似于radiobutton部件 c1 = tk.Checkbutton(window, text='Python', variable=var1, onvalue=1, offvalue=0, command=print_selection) c1.pack() c2 = tk.Checkbutton(window, text='C++', variable=var2, onvalue=1, offvalue=0, command=print_selection) c2.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果
六、Scale窗口部件
说明:尺度(拉动条),允许你通过滑块来设置一数字值。
在这里插入代码片import tkinter as tk window = tk.Tk() # creat a window window.title("Tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) # 在图形界面上创建一个标签label用以显示并放置 label = tk.Label(window, text="拖动滑条取值", bg="green", fg="black", font=("楷体", 14), width=16, height=2) label.pack() def print_selection(value): label.config(text="你已经选择了"+value) # 创建一个尺度滑条,长度500字符,从0开始10结束,以1为刻度,精度为0.1,触发调用print_selection函数 t = tk.Scale(window, label='取值范围如下', font=("楷体", 14), from_=0, to=10, orient=tk.HORIZONTAL, length = 500, showvalue=1, tickinterval=1, resolution=0.1, command=print_selection) t.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果为:
七、Canvas窗口部件
说明:提供绘图功能(直线、椭圆、多边形、矩形) 可以包含图形或位图,用来绘制图表和图,创建图形编辑器,实现定制窗口部件。
import tkinter as tk window = tk.Tk() # creat a window window.title("Tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) # 在图形界面上创建 500 * 200 大小的画布并放置各种元素 canvas = tk.Canvas(window, bg="green", height=560, width=650) # 图片位置(相对路径,与.py文件同一文件夹下,也可以用绝对路径,需要给定图片具体绝对路径) image_file = tk.PhotoImage(file='1.gif') # 此处只能使用GIF格式的图片 # 图片锚定点(n图片顶端的中间点位置)放在画布(250,0)坐标处 image = canvas.create_image(250, 0, anchor='n', image=image_file) # 定义多边形参数,然后在画布上画出指定图形 x0, y0, x1, y1 = 100, 100, 150, 150 # 画直线 line = canvas.create_line(x0-50, y0-50, x1-50, y1-50, fill='red') # 画圆 用黄色填充 oval = canvas.create_oval(x0+120, y0+50, x1+120, y1+50, fill='red') # 画扇形 从0度打开收到180度结束 arc = canvas.create_arc(x0, y0+50, x1, y1+50, start=0, extent=180, fill='red') # 画矩形正方形 rect = canvas.create_rectangle(330, 30, 330+20, 30+20, fill='red') canvas.pack() def move(): # 移动四个图形,按每次(x=20, y=20)步长进行移动 canvas.move(rect, 20, 20) canvas.move(arc, 20, 20) canvas.move(oval, 20, 20) canvas.move(line, 20, 20) # 定义一个按钮用来移动指定图形的在画布上的位置 b = tk.Button(window, text='点击移动图形', command=move) b.pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果为
八、Menu窗口部件
说明:菜单条,用来实现下拉和弹出式菜单,点下菜单后弹出的一个选项列表,用户可以从中选择
import tkinter as tk window = tk.Tk() # creat a window window.title("Tkinter project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) # 在图形界面上创建一个标签用以显示内容并放置 label = tk.Label(window, text="我的目录", bg="green").pack() # 定义一个函数功能,用来代表菜单选项的功能,这里为了操作简单,定义的功能比较简单 def fun(): print("hello python!") # 创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方 menu = tk.Menu(window) # 创建一个File菜单项(默认不下拉,下拉内容包括New,Open,Save,Exit功能项) filemenu = tk.Menu(menu, tearoff=0) # 将上面定义的空菜单命名为File,放在菜单栏中,就是装入那个容器中 menu.add_cascade(label='文件', menu=filemenu) # 在File中加入New、Open、Save等小菜单,即我们平时看到的下拉菜单,每一个小菜单对应命令操作。 filemenu.add_command(label='新建', command=fun) filemenu.add_command(label='打开', command=fun) filemenu.add_command(label='保存', command=fun) filemenu.add_separator() # 添加一条分隔线 filemenu.add_command(label='退出', command=window.quit) # 用tkinter里面自带的quit()函数 # 创建一个Edit菜单项(默认不下拉,下拉内容包括Cut,Copy,Paste功能项) editmenu = tk.Menu(menu, tearoff=0) # 将上面定义的空菜单命名为 Edit,放在菜单栏中,就是装入那个容器中 menu.add_cascade(label='编辑', menu=editmenu) # 同样的在 Edit 中加入Cut、Copy、Paste等小命令功能单元,如果点击这些单元, 就会触发fun的功能 editmenu.add_command(label='剪切', command=fun) editmenu.add_command(label='复制', command=fun) editmenu.add_command(label='粘贴', command=fun) # 创建第二级菜单,即菜单项里面的菜单 submenu = tk.Menu(filemenu) # 和上面定义菜单一样,不过此处实在File上创建一个空的菜单 filemenu.add_cascade(label='Import', menu=submenu, underline=0) # 给放入的菜单submenu命名为Import # 创建第三级菜单命令,即菜单项里面的菜单项里面的菜单命令 submenu.add_command(label='Submenu_1', command=fun) # 这里和上面创建原理也一样,在Import菜单项中加入一个小菜单命令Submenu_1 # 创建菜单栏完成后,配置让菜单栏menu显示出来 window.config(menu=menu) window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
九、messageBox窗口部件
说明:
消息框,用于显示你应用程序的消息框。(Python2中为tkMessagebox),其实这里的messageBox就是我们平时看到的弹窗。 我们首先需要定义一个触发功能,来触发这个弹窗,这里我们就放上以前学过的button按钮,通过触发功能,调用messagebox吧,点击button按钮就会弹出提示对话框
import tkinter as tk import tkinter.messagebox # 要使用messagebox先要导入模块 window = tk.Tk() # creat a window window.title("tk project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) def fun1(): print("hello") # 定义触发函数功能 def fun(): # 提示信息对话窗 tk.messagebox.showinfo(title='Hi', message='你好!') # 提出警告对话窗 tk.messagebox.showwarning(title='Hi', message='有警告!') # 提出错误对话窗 tk.messagebox.showerror(title='Hi', message='出错了!') # 询问选择对话窗return 'yes', 'no' print(tk.messagebox.askquestion(title='Hi', message='你好!')) # return 'True', 'False' print(tk.messagebox.askyesno(title='Hi', message='你好!')) # return 'True', 'False' print(tk.messagebox.askokcancel(title='Hi', message='你好!')) # 在图形界面上创建一个标签用以显示内容并放置 tk.Button(window, text="点击我", bg='purple', font=('楷体', 14), command=fun).pack() window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
十、窗口部件三种放置方式pack/grid/place
1、 Grid:The Grid Geometry Manager
import tkinter as tk window = tk.Tk() # creat a window window.title("tk project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) for i in range(5): for j in range(5): tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10 ) ''' 创建一个三行三列的表格,其实 grid 就是用表格的形式定位的。 row 为行,colum 为列,padx 就是单元格左右间距, pady 就是单元格上下间距,ipadx是单元格内部元素与单元格的左右间距, ipady是单元格内部元素与单元格的上下间距。 ''' window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
2、Pack:The Pack Geometry Manager
import tkinter as tk window = tk.Tk() # creat a window window.title("tk project!") # 给窗口的可视化起名字 window.geometry('500x300') # 设定窗口的大小(长 * 宽) # pack 放置方法 # 上 tk.Label(window, text='P', fg='red').pack(side='top') # 下 tk.Label(window, text='P', fg='red').pack(side='bottom') # 左 tk.Label(window, text='P', fg='red').pack(side='left') # 右 tk.Label(window, text='P', fg='red').pack(side='right') window.mainloop() # 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
3、Place:The Place Geometry Manager
说明:给精确的坐标来定位,如此处给的(50, 100),就是将这个部件放在坐标为(x=50, y=100)的这个位置, 后面的参数 anchor=‘nw’,就是前面所讲的锚定点是西北角。
import tkinter as tk
window = tk.Tk() # creat a window
window.title("tk project!") # 给窗口的可视化起名字
window.geometry('500x300') # 设定窗口的大小(长 * 宽)
# anchor可以等于 n,s,w,e,nw,ne,sw,se分别对应笛卡尔坐标里面的八个方向
tk.Label(window, text="hello python!", font=('楷体', 14)).place(x=100, y=50, anchor='n')
window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
显示结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。