Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程
目录
一、Tkinter 15种基础控件
在Python Tkinter 原装有15种基础控件,本章节只是让大家对所有的控件有一个概念型的认识,不做具体研究,后期会专门开专门的章节去讲解具体的控件使用方法,具体如下表:
Button | 按钮控件,在程序中显示按钮 |
Canvas | 画布控件,用来画图形,如线条及多边形等 |
Checkbutton | 多选框控件,用于在程序中提供多项选择框 |
Entry | 输入控件,定义-一个简单的文字输入字段 |
Frame | 框架控件,定义一个窗体,以作为其他控件的容器 |
Label | 标签控件,定义一个文字或图片标签 |
Listbox | 列表框控件,定义一个下拉方块 |
Menu | 菜单控件,定义一个菜单栏、下拉菜单和弹出菜单 |
Menubutton | 菜单按钮控件,用于显示菜单项 |
Message | 消息控件,定义一个对话框 |
Radiobutton | 单选按钮控件,定义一个单选按钮 |
Scale | 范围控件,定义一个滑动条,以帮助用户设置数值 |
Scrollbar | 滚动条控件,定义-一个滚动条 |
Text | Text 文本控件,定义一个文本框 |
Topleve | 此控件与Frame控件类似,可以作为其他控件的容器。但是此控件有自己的最上层窗口,可以提供窗口管理接口 |
1. Button 按钮控件
示例代码:
# 创建一个按钮
winBtn = tk.Button(text="我是一个按钮")
winBtn.pack()
效果:
解析:Button控件就是一个按钮,可以动过这个按钮执行相关的操作,例如控制一个子程序等等,在后期会专门开一个章节讲解。
2.Canvas 画图控件
示例代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
# 格式win.geometry('%dx%d+%d+%d' %(w,h,x,y))
win.geometry('620x480+200+200') # 窗口尺寸
# 创建一个画板
canvas = tk.Canvas(win, bg="lightgreen")
canvas.place(relx=0.05, rely=0.05, relwidth=0.9, relheight=0.9)
# 画实线
line1 = canvas.create_line((0, 0), (100, 100), width=2, fill="red")
# 画虚线
canvas.create_line((200, 200), (200, 300), width=2, fill="red", dash=(1, 1))
# 画圆弧
canvas.create_arc((50, 100), (400, 400), width=2)
# 显示文字
canvas.create_text((100, 300), text="这是一段文字", font=("微软雅黑", 22))
# 画矩形
canvas.create_rectangle(50, 25, 150, 75, fill='blue', outline='green', width=2)
# 画椭圆
canvas.create_oval(400, 200, 150, 100, fill='pink', outline='green', width=2)
# 画多边形
point = [(50, 100), (100, 150), (150, 200), (200, 200), (300, 300)]
canvas.create_polygon(point, outline='green', fill='blue')
# 删除线子程序
def del_line():
canvas.delete(line1)
# 创建一个按钮
winBtn = tk.Button(text="我是一个按钮", command=del_line())
winBtn.pack()
# 主窗口循环
win.mainloop()
效果:
解析:Canvas是Tkinter自带的画布控件,可以在这个画布里面绘制各种各样的图形,也可以利用这个控件封装一些自己想要的效果,美化用户界面等,Canvas自带了很多工具,例如:create_arc、create_bitmap、create_image等等,可以理解为基本的形状,利用这些基本形状可以绘制出很不错的窗口,后期也会单独开一个章节讲解这个控件
3.Checkbutton 多选框控件
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
# 格式win.geometry('%dx%d+%d+%d' %(w,h,x,y))
win.geometry('200x200+200+200') # 窗口尺寸
# 创建一个多选框
ChkBtn1 = tk.Checkbutton(text="女朋友1.0")
ChkBtn1.pack()
# 再创建一个多选框
ChkBtn2 = tk.Checkbutton(text="女朋友2.0")
ChkBtn2.pack()
# 主窗口循环
win.mainloop()
效果:
解析:Checkbutton多选框(复选框)就是可以一次选择多个选项的选择框,在这里面可以设置多个选项,最常见的就是我们在做试卷的时候的多选题,大概就是这样,关于CheckButton更多使用方法后期也会专门开设单独的章节进行讲解。
4.Entry 单行文本框
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
# 格式win.geometry('%dx%d+%d+%d' %(w,h,x,y))
win.geometry('200x200+200+200') # 窗口尺寸
# 创建一个文本框
winEntry = tk.Entry(width=20)
winEntry.pack()
# 主窗口循环
win.mainloop()
效果:
解析:Entry 是一个单行文本框,可以利用这个显示或者让用户输入一行信息的控件。
5.Frame 框架控件
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
win.geometry('800x600+200+200')
# 设置窗口背景色
win.config(background="#FF1493")
# 创建左侧上部框架
frmLT = tk.Frame(width=500, height=320, bg='blue')
tk.Label(frmLT, text="第一个框架").grid()
# 创建左侧中间框架
frmLC = tk.Frame(width=500, height=150, bg='yellow')
tk.Label(frmLC, text="第二个框架").grid()
# 创建左侧下部框架
frmLB = tk.Frame(width=500, height=30, bg='green')
tk.Label(frmLB, text="第三个框架").grid()
# 创建右侧框架
frmRT = tk.Frame(width=200, height=500, bg='#00BFFF')
tk.Label(frmRT, text="第四个框架").grid()
# 设置所有框架位置
frmLT.grid(row=0, column=0, columnspan=2, padx=1, pady=3)
frmLC.grid(row=1, column=0, columnspan=2, padx=1, pady=3)
frmLB.grid(row=2, column=0, columnspan=2)
frmRT.grid(row=0, column=2, rowspan=3, padx=2, pady=3)
# 固定框架大小
frmLT.grid_propagate(0)
frmLC.grid_propagate(0)
frmLB.grid_propagate(0)
frmRT.grid_propagate(0)
# 主窗口循环
win.mainloop()
效果:
解析:这里的Frame框架组件就类似于Html里面的DIV,可以通过对不同的Frame进行提前规划,进行界面设定,一般在写比较繁琐的软件的时候使用框架可以快速定位,然后再往框架里面添加对应的控件即可,具体使用方法将会在今后的章节中具体讲解。
6.Label 标签控件
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
win.geometry('220x360+200+200')
# 创建一个默认的Label文本标签
winLabel = tk.Label(text="登高-杜甫", font=("书体坊兰亭体", 30), fg='#696969')
winLabel.place(x=5, y=5)
# 创建一个多行文本你的标签
Strval = """
风急天高猿啸哀,渚清沙白鸟飞回。
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。
"""
winLabel1 = tk.Label(win, text=Strval, anchor='center', justify='center')
winLabel1.place(x=5, y=50)
# 创建一个图片标签
photo = tk.PhotoImage(file="dufu.gif")
picLabel = tk.Label(win, image=photo)
picLabel.place(x=5,y=150)
# 主窗口循环
win.mainloop()
效果:
解析:Label 标签除了单行、多行文本之外还能实现简单的图片预览功能,在用户界面设计当中,是比较常用的控件之一,具体的用法在后面的章节中会具体进行介绍。
7.Listbox 列表标签
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
win.geometry('200x200+200+200')
# 创建一个普通列表框
winListbox1 = tk.Listbox()
winListbox1.place(x=5, y=5)
for item in ['C语言', 'C++', 'PHP', 'JAVA/JavaScript', 'Python', 'HTML/CSS', 'JSON', 'XML', 'Go']:
winListbox1.insert('end', item)
# 主窗口循环
win.mainloop()
效果:
解析:Listbox 列表框主要是用于显示一个用户可以选择的列,可以通过子程序设置进行增删改等操作,具体内容将在后面的章节进行介绍。
8.Menu 菜单控件
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
win.geometry('200x200+200+200')
# 菜单被点击执行打印子程序
def MenuClick():
print("菜单被选中")
# 创建主菜单
winMenu = tk.Menu()
# 创建一个菜单
fileM = tk.Menu(winMenu, tearoff=False)
fileM.add_command(label="打开(O)", command=MenuClick)
fileM.add_command(label="关闭(Esc)", command=win.quit)
fileM.add_separator()
winMenu.add_cascade(label="文件(File)", menu=fileM)
# 窗口开启菜单显示
win.config(menu=winMenu)
# 主窗口循环
win.mainloop()
效果:命令行:
备注:笔者使用的是Mac OS 所以菜单在最上面,Windows/Linux菜单就在界面里面
解析:Menu是设计用户窗口界面时比较常用的一个控件,基本上一些常用软件都会使用这个控件,在后面的章节会具体介绍。
9.Menubutton 菜单按钮
代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 引用tkinter窗口
import tkinter as tk
# 创建窗口
win = tk.Tk()
# 给创建的窗口添加一个标题
win.title('第一个窗口')
# 设置窗口大小,和屏幕的高度,即('窗口宽度x窗口高度+屏幕顶边距离+屏幕左边距离')
win.geometry('200x200+200+200')
# 菜单被点击执行打印子程序
def MenuClick():
print("菜单被选中")
# 创建主菜单
winMenuBtn = tk.Menubutton(win,text="菜单", relief=tk.RAISED)
winMenuBtn.pack()
# 创建一个菜单
fileM = tk.Menu(winMenuBtn, tearoff=False)
fileM.add_checkbutton(label="打开(O)", command=MenuClick)
fileM.add_command(label="保存(S)", command=MenuClick)
fileM.add_separator()
fileM.add_command(label="关闭(Esc)", command=win.quit)
# 窗口开启菜单显示,注意设置主体从窗口变换到Menubutton
winMenuBtn.config(menu=fileM)
# 主窗口循环
win.mainloop()
效果:
解析:Menubutton就是一个菜单按钮,可以理解为点一下按钮出来一个菜单的意思,具体将在菜单一节中具体讲解。
因个人能力有限,文章中出现的错误请各位及时指出,本章未完待续……