【Python】Tkinter库使用方法

本文详细介绍了Tkinter库在Python中的使用,包括控件的导入与初始化、各种控件的功能与设置,如Frame、Label、Button、Checkbutton、Entry、Listbox等。此外,还展示了如何创建消息框、设置布局、使用滚动条以及输入验证等功能。通过实例展示了如何实现复选框、单选按钮、输入框和列表框的交互操作。最后,提到了Tkinter的消息循环和变量使用。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

导入&初始化

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.')

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值