《零基础学Python》GUI编程与Tkinter相关组件介绍【十二】

整体文章目录

整体目录

一、 当前章节目录

在这里插入图片描述

二、GUI程序开发简介

  • 我们使用过大量的客户端程序,这些都属于图形界面程序。
  • 构建出了GUI程序的每一个组件,程序的界面就完成了。
  • 当为程序需要的每一个事件都添加完相应的回调处理之后,整个GUI程序就完成了。

三、Tkinter及其主要组件

3.1 在程序中使用Tkinter

  1. 导入Tkinter模块
  2. 创建一个顶层窗口
  3. 在顶层窗口的基础上构建所需要的GUI模块和功能
  4. 将每一个模块与底层程序代码关联起来
  5. 执行主循环

3.2 顶层窗口

from tkinter import *       # 导入tkinter模块
root = Tk()                 # 使用函数Tk()来创建root对象
root.title("顶层窗口")       # 给窗口自定义名称,否则默认显示tk
root.mainloop()             # 进入主循环,否则运行时将一闪而过看不到界面

运行结果:

这里是引用

3.3 标签

from tkinter import *
root = Tk()
label = Label(root, text="Hello World")     # 定义标签
label.pack()        # 调用pack方法
root.mainloop()

运行结果:

这里是引用

3.4 框架

from tkinter import *
root = Tk()
root.title("顶层窗口")
for relief in [RAISED, SUNKEN, FLAT, RIDGE, GROOVE, SOLID]:
    f = Frame(root, borderwidth=2, relief=relief)       # 定义框架
    # 定义标签,并且使用side参数设定排列方式
    Label(f, text=relief, width=10).pack(side=LEFT)
    # 显示框架,并设定向左排列,x和y轴的宽度均为5个像素
    f.pack(side=LEFT, padx=5, pady=5)
root.mainloop()

运行结果:

这里是引用

3.5 按钮

from tkinter import *
root = Tk()
root.title("顶层窗口")
# 使用state参数来设定按钮的状态
Button(root, text="禁用", state=DISABLED).pack(side=LEFT)
Button(root, text="取消").pack(side=LEFT)
Button(root, text="确定").pack(side=LEFT)
Button(root, text="退出", command=root.quit).pack(side=RIGHT)  # 绑定了退出的回调
root.mainloop()

运行结果:

这里是引用

3.6 输入框

from tkinter import *
root = Tk()
root.title("顶层窗口")

f1 = Frame(root)        # 定义框架
Label(f1, text="标准输入框:").pack(side=LEFT, padx=5, pady=10)       # 定义标签
e1 = StringVar()        # 定义输入框内容
Entry(f1, width=50, textvariable=e1).pack(side=LEFT)        # 基本的输入框
e1.set('输入框默认内容')       # 设置一般输入框默认内容
f1.pack()

f2 = Frame(root)        # 定义框架
e2 = StringVar()
Label(f2, text='禁用输入框:').pack(side=LEFT, padx=5, pady=10)       # 定义标签
Entry(f2, width=50, textvariable=e2, state=DISABLED).pack(side=LEFT)        # 禁用的输入框
e2.set('不可修改的内容')       # 设置禁用的输入框内容
f2.pack()

root.mainloop()

运行结果:

这里是引用

3.7 单选按钮

from tkinter import *
root = Tk()
root.title("顶层窗口")
foo = IntVar()      # 定义对象
for text, value in [('red', 1), ('green', 2), ('black', 3), ('bule', 4), ('yellow', 5)]:
    r = Radiobutton(root, text=text, value=value, variable=foo)     # 定义r对象
    r.pack(anchor=W)        # 调用pack方法
foo.set(2)      # 设定默认选项

root.mainloop()

运行结果:

这里是引用

3.8 复选按钮

from tkinter import *
root = Tk()
root.title("顶层窗口")
l = [('red', 1), ('green', 2), ('black', 3), ('blue', 4), ('yellow', 5)]        # 设定按钮的值
for text, value in l:       # 循环遍历l列表的内容
    foo = IntVar()      # 定义foo对象
    c = Checkbutton(root, text=text, variable=foo)  # 定义c对象
    c.pack(anchor=W)        # 调用pack方法
root.mainloop()

运行结果:

这里是引用

from tkinter import *
root = Tk()
root.title("顶层窗口")
l = [('red', 1, NORMAL), ('green', 2, NORMAL), ('black', 3, DISABLED), ('blue', 4, NORMAL),
     ('yellow', 5, DISABLED)]       # 设定按钮的值、状态
for text, value, status in l:       # 循环遍历l列表的内容
    foo = IntVar()
    c = Checkbutton(root, text=text, variable=foo, state=status)        # 使用state设定按钮状态
    c.pack(anchor=W)
root.mainloop()

运行结果:

这里是引用

3.9 消息

from tkinter import *
root = Tk()
root.title("顶层窗口")
Message(root, text="这是帮助文档!这是帮助文档这是帮助文档这是帮助文档这是帮助文档"
                   "这是帮助文档这是帮助文档"
                   "这是帮助文档这是帮助文档这是帮助文档这是帮助文档这是帮助文档这是帮助文档"
                   "这是帮助文档这是帮助文档"
                   "这是帮助文档这是帮助文档这是帮助文档这是帮助文档这是帮助文档这是帮助文档"
                   "这是帮助文档这是帮助文档",
        bg='blue', fg='ivory', relief=GROOVE).pack(padx=10, pady=10)
root.mainloop()

运行结果:

这里是引用

3.10 滚动条

from tkinter import *
root = Tk()
root.title("顶层窗口")
l = Listbox(root, height=6, width=15)       # 设定一个列表组件,列表组件在下一小节介绍
scroll = Scrollbar(root, command=l.yview)   # 定义滚动条,并绑定一个回调
l.configure(yscrollcommand=scroll.set)      # 列表关联滚动条
l.pack(side=LEFT)                           # 列表靠左
scroll.pack(side=RIGHT, fill=Y)             # 靠右并充满Y轴的垂直滚动条
for item in range(20):                      # 循环产生20个数字
    l.insert(END, item)                     # 向列表组件中添加数字
root.mainloop()

运行结果:

这里是引用

3.11 列表框

from tkinter import *
root = Tk()
root.title("顶层窗口")
l = Listbox(root, width=15)
l.pack()
for item in ['apple', 'orange', 'peach', 'banana', 'melon']:        # 循环遍历列表元素
    l.insert(END, item)     # 向列表框中插入列表中的元素
root.mainloop()

运行结果:

在这里插入图片描述

四、Tkinter所有组件简介

在这里插入图片描述

五、习题

习题:

  1. 不看书中的示例,自己开发一个下图所示的界面。
  2. 说出Label和Button的区别。
    答案:
  1. 代码如下。
  2. Label:标签。用来显示文字或图片
    Button:按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作事件
# 第一题
from tkinter import *
root = Tk()
root.title("顶层窗口")
foo = IntVar()      # 定义对象
for text, value in [('red', 1), ('green', 2), ('black', 3), ('bule', 4), ('yellow', 5)]:
    r = Radiobutton(root, text=text, value=value, variable=foo)     # 定义r对象
    r.pack(anchor=W)        # 调用pack方法
foo.set(2)      # 设定默认选项

root.mainloop()

运行结果:

这里是引用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值