自学Python第二十一天- tkinter 模块,GUI编程


python 默认的是命令行模式,但是编程少不了交互界面,所以 GUI 也是编程必学的部分。这里研究 tkinter 模块的使用。

tkinter 的安装和引入

tkinter 是系统模块,不需要进行安装,可以直接引入。 from tkinter import *

GUI 编程一般流程

GUI 编程分为界面设计和功能实现两部分,一般使用这样的流程:

  1. 创建画布(窗口)
  2. 在画布上绘制元素(控件、组件)
  3. 设置各元素(控件、组件)的属性、呈现时的样式、位置等
  4. 界面呈现给用户,并进行持久化
  5. 设置各元素的交互事件
  6. 对各种交互事件进行处理
  7. 对处理后的数据进行存储或呈现给用户
    其中1-4为界面设计,4-6为功能实现。

界面设计

界面设计基本上就是创建画布,然后在画布上添加各元素,设置元素的样式、位置等。通常添加元素和设置元素属性一般放在一起,方便阅读。

创建画布

root = Tk()		# 创建了一个画布(窗体)
root.title('全网音乐下载器')		# 设置窗体标题
root.geometry('560x450+400+200')		# 设置窗体大小为 560x450 ,起始位置在 400,200 的地方。

在画布上绘制元素

label = Label(root, text='请输入下载歌曲:', font=('微软雅黑 bold', 20))		# 创建一个 label 组件在窗体 root
entry = Entry(root, font=('隶书', 20))		# 创建一个 Entry 组件在窗体 root
var = StringVar()		# 添加2个单选按钮,因为是单选,所以要成组,即这些按钮的值只有一个有效。这里存放有效值
r1 = Radiobutton(root, text='网易云', variable=var, value='网易云')		# 添加一个单选按钮,有效值存放变量为 var ,本按钮的值为 '网易云'
r2 = Radiobutton(root, text='QQ', variable=var, value='QQ')		# 添加一个单选按钮,有效值存放变量为 var ,本按钮的值为 'QQ'
listbox = Listbox(root, font=('宋体', 16), width=50, height=15)		# 添加一个列表框,并设置大小
b1 = Button(root, text='开始下载', font=('黑体', 15))		# 添加按钮 b1
b2 = Button(root, text='退出程序', font=('黑体', 15), command=root.quit)      # 添加按钮 b2 ,设置点击命令执行 root.quit() 方法

这里需要注意的是,Button 元素的 command 可以调用一个函数,但是不能传参。需要传参则使用 lambda 进行间接调用。

设置各元素的属性

定位、布局

label.grid()		# 将 lable 呈现在窗体上,位置为默认位置
entry.grid(row=0,column=1)		# 将 entry 呈现在窗体上,位置为第1行第2列
r1.grid(row=1, column=0)		
r2.grid(row=1, column=1)		
listbox.grid(row=2, columnspan=2)		# 将 listbox 呈现在窗体上,位置为第2行,并且合并2列
b1.grid(row=3, column=0)		
b2.grid(row=3, column=1)		

呈现界面、持久化

python 不像一些所见即所得的 GUI 编程环境(例如 VB.net 等),设计完成呈现的界面必须持久化。否则界面渲染完成后程序就会结束,界面也会随着程序结束而消失。

root.mainloop()		# 呈现并持久化界面

功能实现

功能实现就是对各元素的操作进行响应,并反馈。例如之前添加元素 b2 时,参数 command=root.quit 就是添加了一个点击操作,响应方法为 root.quit() 方法。至于此方法的行为和反馈则是 tkinter 模块预设的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值