Python tkinter 学习笔记(2)-- 控件、组件(一)

Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程

 

目录

一、Tkinter 15种基础控件

1. Button 按钮控件

2.Canvas 画图控件

3.Checkbutton 多选框控件

4.Entry 单行文本框

5.Frame 框架控件

6.Label 标签控件

7.Listbox 列表标签

8.Menu 菜单控件

9.Menubutton 菜单按钮


一、Tkinter 15种基础控件

在Python Tkinter 原装有15种基础控件,本章节只是让大家对所有的控件有一个概念型的认识,不做具体研究,后期会专门开专门的章节去讲解具体的控件使用方法,具体如下表: 

Button按钮控件,在程序中显示按钮
Canvas画布控件,用来画图形,如线条及多边形等
Checkbutton多选框控件,用于在程序中提供多项选择框
Entry输入控件,定义-一个简单的文字输入字段
Frame框架控件,定义一个窗体,以作为其他控件的容器
Label标签控件,定义一个文字或图片标签
Listbox列表框控件,定义一个下拉方块
Menu菜单控件,定义一个菜单栏、下拉菜单和弹出菜单
Menubutton菜单按钮控件,用于显示菜单项
Message消息控件,定义一个对话框
Radiobutton单选按钮控件,定义一个单选按钮
Scale范围控件,定义一个滑动条,以帮助用户设置数值
Scrollbar滚动条控件,定义-一个滚动条
TextText 文本控件,定义一个文本框
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就是一个菜单按钮,可以理解为点一下按钮出来一个菜单的意思,具体将在菜单一节中具体讲解。

因个人能力有限,文章中出现的错误请各位及时指出,本章未完待续……

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个爱折腾的小人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值