【Python】Tkinter库使用方法
导入&初始化
from tkinter import *
master = Tk()
master.title('title_name')
master.geometry('800x600') # 不能有空格在800和x之间,适当设置分辨率利于设置滚动条
控件对象
所有控件一览
| 控件 | 名称 | 功能 |
|---|---|---|
| Button | 按钮 | 在程序中显示按钮 |
| Canvas | 画布 | 显示图形元素如线条或文本 |
| CheckButton | 复选框 | 用于在程序中提供多项选择框 |
| Entry | 输入框 | 用于获取文本内容 |
| Frame | 框架 | 在屏幕上显示一个矩形区域,多用来作为容器 |
| Label | 标签 | 可以显示文本和位图 |
| LisBox | 列表框 | 在LisBox窗口小部件是用来显示一个字符串列表给用户 |
| MenuButton | 菜单按钮 | 用于显示菜单项 |
| Menu | 菜单 | 显示菜单栏、下拉菜单和弹出菜单 |
| Message | 消息控件 | 用来显示多行文本,与Label比较类似 |
| RadioButton | 单选按钮 | 显示一个单选的按钮状态 |
| Scale | 刻度控件 | 显示一个数值刻度,为输出限定范围的数字区间 |
| ScrollBar | 滚动条 | 当内容超过可视化区域时使用,如列表框 |
| Text | 文本框 | 可以显示单行或多行文本 |
| TopLevel | 容器 | 用来提供一个单独的对话框,和Frame比较类似 |
| SpinBox | 输入控件 | 与Entry类似,但是可以指定输入范围值 |
| PanedWindow | 窗体面板 | 一个窗口布局管理的插件,可以包含一个成者多个子控件 |
| tkMessageBox | 消息框 | 显示应用程序的提示信息 |
控价设置一般是以下三步:
- 初始化,导入资源(图片、文件等),对要实现的功能进行函数编写
- 对控件设置属性,它属于哪里(是master主窗口还是某个Frame框架),它的一些常量变量的是什么
- pack方法或grid方法执行放置
框架Frame
在主窗口中声明多个框架,容器控件,只是一个矩形区域放置空间而已;不要理解为一堆控件绑一起,然后一起放下去,每个控件都需要单独放。
myfrm2 = Frame(master)
mygroup = LabelFrame(master, text='当前市面上最畅销的计算机教材')
mygroup.pack(padx=30)
标签Label
myicon = PhotoImage(file = "E:\\pylogo.gif") # 导入图片
mylabel = Label(master,
image = myimage, # 设置所用背景图
compound = TOP, # 设置图片位置
text = "Tkinter制作的界面真美!", # 设置文本内容
textvariable = myvar, # text和text变量不能同时设置
justify = CENTER, # 设置文本位置
font = ("方正舒体", 18), # 设置文本字体
fg = "green" # 设置文字颜色
)
mylabel.pack(side = RIGHT)
按钮Button
myfav_button = Button(myfrm2, text = "旧版入口", command = myfunc)
myfav_button.pack()
复选框Checkbutton
点击就可以改变数字,是IntVar()默认值为0,只要var是1就表明选中,就会出现勾
HOBBIES = ['足球', '篮球', '游泳', '跑步', '休闲潜水'] # 列表存放爱好的体育运动选项
val = [] # 存放用户选项值的变量
for sport in HOBBIES:
val.append(IntVar())
c = Checkbutton(master, text = sport, variable = val[-1],
padx = 50, font = ('隶书', 14))
c.pack(anchor = W)
l = Label(master, textvariable = val[-1]) # 和标签组合使用,标签用于显示文本
l.pack(anchor = S)
通过value的设置实现单选框功能
Radiobutton(master, text = '男', variable = val, value = 1).pack(anchor = W)
Radiobutton(master, text = '女', variable = val, value = 0).pack(anchor = W)
Radiobutton(master, text = '女博士', variable = val, value = 0).pack(anchor = W)
Radiobutton(master, text = '男潜水员', variable = val, value = 1).pack(anchor = W)
单选框 value值表示只有valuable = value时才显示选中
输入框Entry
# 检测函数,布尔值
def check_usr():
if usr_entry.get() != '':
return True
else:
return False
def warn_usr():
print('用户名不能为空!')
# 输入框用于储存用户名和密码,用这个库就必须用它的变量类型
usr = StringVar() # 用户名变量
pwd = StringVar() # 密码变量
label(master, text = '用 户 名:').grid(row=0, column = 0)
Label(master, text = '密 码:').grid(row=1, column = 0)
# validate = 'focusout'表示鼠标离开时执行校检
# check_usr是布尔值函数
usr_entry = Entry(master, textvariable = usr, validate = 'focusout', validatecommand = check_usr, invalidcommand = warn_usr)
pwd_entry = Entry(master, textvariable = pwd, show = '●')
usr_entry.grid(row = 0, column = 1, padx = 12, pady = 15)
pwd_entry.grid(row = 1, column = 1, padx = 12, pady = 15)
# 按钮执行函数命令,对输入的数据进行处理
def print_usr():
print("新用户 :%s" %usr_entry.get()) # 用 get 方法获取输入框存储的内容
print("口 令 :%s" %pwd_entry.get())
Button(master, text = '立 即 注 册', width = 12, command = print_usr).grid(row = 3, column = 0, sticky = W, padx = 8, pady = 10)
Button(master, text = '退 出', width = 12, command = master.quit).grid(row = 3, column = 1, sticky = E, padx = 8, pady = 10)
列表框 & 滚动条
# 控制适当的分辨率
master.geometry("250x200")
mysbar = Scrollbar(master)
# 设置内容框,内容框本来就可以滚动,主要是怎么将它与滚动条绑定
# 令列表框和滚动条一起滚,滚框条可以动,分别设置属性
mylbx = Listbox(master, yscrollcommand = mysbar.set)
# 令滚动条的位置和列表框绑定,不弹回初始位,拉条框可以动
mysbar.config(command = mylbx.yview)
# 放入列表数据
for n in range(2002, 2020):
mylbx.insert(END, str(n) + '年')
# 滚动条在右侧,沿Y方向
mysbar.pack(side = RIGHT, fill = Y)
mylbx.pack(side = RIGHT, fill = BOTH)
消息框messagebox
# 一个messagebox类,要先导入这个
import tkinter.messagebox
def show_msg():
tkinter.messagebox.showinfo('热烈祝贺', '郑阿奇老师《Python实用教程》销量突破100万册!')
通过按钮执行函数命令,弹出消息框
一些方法和其他的对象设置
控件放置布局
.pack(side = RIGHT, fill = BOTH)
.grid方法管理布局,sticky对齐方式,NSWE,上下左右对齐
消息循环
mainloop() # 能实时反应
tk库的变量
'''整形'''
val = IntVar() # 不设置默认为0
val.set(1030000)
'''字符串'''
var = StringVar()
var.set('我爱最新的 Python 3.7!\nHello!I love Python.')
本文详细介绍了Tkinter库在Python中的使用,包括控件的导入与初始化、各种控件的功能与设置,如Frame、Label、Button、Checkbutton、Entry、Listbox等。此外,还展示了如何创建消息框、设置布局、使用滚动条以及输入验证等功能。通过实例展示了如何实现复选框、单选按钮、输入框和列表框的交互操作。最后,提到了Tkinter的消息循环和变量使用。

6711

被折叠的 条评论
为什么被折叠?



