Python tkinter库

这篇具有很好参考价值的文章主要介绍了Python tkinter库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Tkinter模块是Python系统自带的标准GUI库,具有一套常用的图形组件

基本组件
  • Button 按钮
  • Canvas 画布,用于绘制直线、椭圆、多边形等各种图形
  • Checkbutton 复选框形式的按钮
  • Entry 单行文本框
  • Frame 框架,可作为其他组件的容器,常用来对组件进行分组Label 标 签,常用来显示单行文本
  • Listbox 列表框
  • Menu 菜单
  • Message 多行文本框
  • Radiobutton 单选钮,同一组中的单选钮任何时刻只能有一个处于选中状态
  • Scrollbar 滚动条
  • Toplevel 常用来创建新的窗口
开发基本流程
  1. 编写通用代码,例如数据库操作
  2. 搭建界面,放置组件,设置组件属性
  3. 编写组件的事件处理代码
  4. 启动应用程序,启动消息主循环

使用流程

导入模块
import tkinter
from tkinter import *
import tkinter as tk
创建窗体对象

窗体是带有标题、边框的一个顶层容器,在其内部可以添加其他组件,使用的模块对象都是放置在窗体对象中的。
调用pack()方法进行容器的区域布局。

win = tkinter.Tk()
win.title("2333") # 标题
win.geometry("720x480+40+40") # 大小(720x480),起始位置(40+40)
win.mainloop() # 进入主事件循环,即把窗体对象显现出来。
标签

label = tkinter.Label(容器名称,显示文字或图像内容,显示位置,文字字体,颜色等)
Python tkinter库

按钮和事件处理

当按下应用程序中的按钮时,应用程序能触发某个事件从而执行相应的操作。在Python中tkinter模块中的Button用于构建按钮对象。

Btn = tkinter.Button(容器,text=‘按钮上的文字’)
Python tkinter库

使用例

import tkinter
win = tkinter.Tk()
win.title("2333")
win.geometry("720x480+40+40")
label = tkinter.Label(win, text = "你是一个一个一个",font =  "宋体", fg = "#0000ff")
label.pack()

def myClick():
    t1 = "哼哼哼啊啊啊啊啊啊啊啊"
    labelClick = tkinter.Label(win, text = t1)
    labelClick.pack()
    
btn = tkinter.Button(win, text = "点击我", command = myClick)
btn.pack()
win.mainloop()

界面布局管理

Python定义了3种界面布局管理方式

Pack布局

Pack 布局管理方式按组件的创建顺序在容器区域中排列

  • Pack的常用属性有side和fill
  • Side属性:其取值为top、bottom、left和right,分别表示组件排列在上、下、左、右的位置。默认为top.
  • Fill属性:其取值为x、y、both, 分别表示填充x(水平)或y(垂直)方向的空间。
import tkinter

win = tkinter.Tk()
win.title("布局")
win.geometry("720x480")

L1 = tkinter.Label(win, text = "L1", bg = "red")
L1.pack(fill = 'y', side = "left")
L2 = tkinter.Label(win, text = "L2", bg = "green")
L2.pack(fill = 'both', side = "right")
L3 = tkinter.Label(win, text = "L3", bg = "blue")
L3.pack(fill = 'x', side = "left")

win.mainloop()
Place布局

Place布局管理方式指定组件的坐标位置排列,也叫做绝对排列

lb = Label(root, text='hello Place')
lb.place(relx = 1,rely = 0.5,anchor = CENTER)
lb.place(x=0, y=0, anchor = NW)
grid布局

网格布局,组件放置在二维表格的单元格中

Grid布局的常用属性有row(行)、column(列)、rowspan(组件占据行数)、columnspan(组件占据列数)

from tkinter import *
win = tkinter.Tk()
win.title("学生信息收集")
win.geometry("720x480+10+10")

L1 = Label(win, text = "学生信息", font = "song -20")
L2 = Label(win, text = "学号", font = "song -20")
L3 = Label(win, text = "姓名", font = "song -20")
L4 = Label(win, text = "专业", font = "song -20")

L1.grid(row = 0, column = 1)
L2.grid(row = 1)
L3.grid(row = 2)
L4.grid(row = 3)

文本框组件

在python中,文本框Entry用于接收输入的数据。文本框Entry的基本格式为:
txt = tkinter.Entry(容器名称,width=宽度,文字字体、颜色等)

Python tkinter库

制作一个学生信息的收集
from tkinter import *
win = tkinter.Tk()
win.title("学生信息收集")
win.geometry("720x480+10+10")

L1 = Label(win, text = "学生信息", font = "song -20")
L2 = Label(win, text = "学号", font = "song -20")
L3 = Label(win, text = "姓名", font = "song -20")
L4 = Label(win, text = "专业", font = "song -20")

L1.grid(row = 0, column = 1)
L2.grid(row = 1)
L3.grid(row = 2)
L4.grid(row = 3)



e1 = Entry(win, width = 20, font = "song -20")
e2 = Entry(win, width = 20, font = "song -20")
e3 = Entry(win, width = 20, font = "song -20")

e1.grid(row = 1, column = 2)
e2.grid(row = 2, column = 2)
e3.grid(row = 3, column = 2)

b1 = Button(win, text = "提交")
b2 = Button(win, text = "取消")

b1.grid(row = 4, column = 0)
b2.grid(row = 4, column = 1)

win.mainloop()
文本框中的内容设置及获取

对文本框Entry中文字内容的操作可以使用StringVar()对象来完成。StringVar()跟踪变量值的变化,把最新的值显示到界面上

步骤:

  • 首先把entry中的textvariable属性设置为StringVal对象
  • 再通过StringVar()对象的get()和set()函数读取或输出相应的字符内容
  • 由此,文本框中始终显示最新的值

设计一个登录界面

from tkinter import *
win = tkinter.Tk()
win.title("身份验证")
win.geometry("720x480+10+10")

def myClick():
    txt = txt2.get()
    if(txt == "abc"):
        txt3.set("oh♂yeah♂sir♂")
    else:
        txt3.set("你是一个一个一个")
        
lab1 = Label(win, text = "请输入用户名", font = ('song', '16'))
lab2 = Label(win, text = "请输入密码", font = ('song', '16'))

txt1,txt2, txt3 = StringVar(), StringVar(), StringVar()
txt3.set("请输入用户名和密码")

e1 = Entry(win, textvariable = txt1, width = 16, font = "song -16")
e2 = Entry(win, textvariable = txt2, width = 16, show = "*", font = "song -16")
b1 = Button(win, text = "提交", command = myClick, font = "song -16")
lab3 = Label(win, textvariable = txt3, relief = "ridge", width = 30, font = ("song", "16"))

lab1.grid(row = 0, column = 0)
lab2.grid(row = 1, column = 0)
e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)

lab3.grid(row = 2, column = 0, columnspan = 2)
b1.grid(row = 2, column = 2)

win.mainloop()

单选按钮和复选框

单选按钮Radiobutton和复选框Checkbutton是一组表示多种选择的组件
它们只有两种状态“选中/未选中”,其属性和方法类似

chVarDis = tk.IntVar()

  • 该变量记录单选框是否被选中的状态,可以通过chVarDis.get()获取其状态,其状态值为int类型,选中为1;未选中为0。
  • 另外,复选框CheckButton对象的select方法表示选中,deselect方法表示未选中

Python tkinter库

单选框
from tkinter import *
win = Tk()
win.title("单选框")
win.geometry("720x480+10+10")

txt = StringVar()
txt.set("请选择")
lab = Label(win, textvariable = txt, relief = "ridge", width = 30)

chVarDis = IntVar()
check1 = Checkbutton(win, text = "C", variable = chVarDis, state = "disabled")
check1.select()

chVarUn = IntVar()
check2 = Checkbutton(win, text = "Java", variable = chVarUn, state = "disabled")
check2.deselect()

chVarEn = IntVar()
check3 = Checkbutton(win, text = "Python", variable = chVarEn)
check3.select()


lab.grid(row = 0, column = 0, columnspan = 3)
check1.grid(row = 4, column = 0, sticky = W)
check2.grid(row = 4, column = 1, sticky = W)
check3.grid(row = 4, column = 2, sticky = W)

win.mainloop()
复选框
from tkinter import *
win = Tk()
win.title("多选一")
win.geometry("720x480+10+10")

txt = StringVar()
txt.set("请选择")
lab = Label(win, textvariable = txt, relief = "ridge", width = 30) #relief是设置边框

chk = ["胡桃", "刻晴", "甘雨"]

def radCall():
    radSel = radVar.get()
    if radSel == 0:
        txt.set(chk[0])
    elif radSel == 1:
        txt.set(chk[1])
    elif radSel == 2:
        txt.set(chk[2])
    print(radSel)
    
radVar = IntVar()
for i in range(3):
    curRad = Radiobutton(win, text = chk[i], variable = radVar, value = i, command = radCall) # 复选框中value是选中该框的返回值
    curRad.grid(column = i, row = 5, sticky = W)

lab.grid(row = 0, column = 0, columnspan = 3)

win.mainloop()

其他常用组件

from tkinter import tkk
  • 标签框架LabelFrame
  • 是一个带边框的容器,可以在该容器中放置其他组件ttk.LabelFrame(上一级容器,text=“标签显示的文字内容”)
  • 下拉列表框Combobox
  • 常用的一种选值组件,使用下拉列表框时要先声明一个取值变量number=tk.StringVar()
  • 该变量记录在下拉列表框预设的值中所选取的字符值,在下拉列表框中预设的值为一个元组。
  • 下拉列表框Combobox的构造方法• ttk.Combobox(容器,width=宽度,textvariable=取值变量)
  • 滚动文本框ScolledText
  • 是一个带滚动条的文本框,可以输入多行文本内容src=scrolledtext.ScrolledText(容器,width=文本框宽度,height=文本框高度)
创建包含标签框架、下拉列表框和滚动文本框
from tkinter import ttk, scrolledtext
import tkinter as tk

win = tk.Tk()
win.title("Python组件演示")
win.geometry("1080x720")

montry = ttk.LabelFrame(win, text = "标签框架")
montry.grid(row = 0, column = 0, padx = 100, pady = 100)

lable1 = ttk.Label(montry, text = "选择一个数字")
lable1.grid(column = 1, row = 0)

def clickMe():
    action.configure(text = "Hello" + ' '+ numberChosen.get())
    
action = ttk.Button(montry, text = "单击我", command = clickMe)
action.grid(column = 2, row = 1)

num = tk.StringVar()
numberChosen = ttk.Combobox(montry, width = 12, textvariable = num, state = "readonly")
numberChosen['values'] = (1, 2, 4, 42, 100)
numberChosen.grid(column = 1, row =  1)
numberChosen.current(0)

scrolW = 30
scrolH = 3
scr = scrolledtext.ScrolledText(montry, width=  scrolW, height = scrolH)
scr.grid(column = 0, columnspan = 3)

win.mainloop()

对话框

Tkinter提供了3种标准的对话框模块

  • 消息对话框 (messagebox)
  • 文件对话框(filedialog)
  • 颜色选择对话框(colorchooser)
无返回值的消息对话框
  1. 消息对话框的导入模块语句import tkinter.messagebox #消息框,对话框的关键
  2. 消息提示框
    tkinter.messagebox.showinfo(‘提示’,’人生苦短’)
  3. 消息警告框
    tkinter.messagebox.showwarning(‘警告’,’明日有大雨’)
  4. 错误消息框
    tkinter.messagebox.showerror(‘错误’,’出错了’)
有返回值的消息对话框
  1. askokcancel()
    在对话框中显示“确定”和取消按钮,其返回值分别为true或false
  2. askokquestion()
    在对话框中显示“是”和“否”按钮,其返回值分别为yes或no
  3. askretrycancel()
    在对话框中显示“重试”和“取消”按钮,其返回值分别为true或false
  4. askyesnocancel()
    在对话框中显示“是”、“否”和“取消”3个按钮,其返回值分别为yes、no或None
文件对话框
import tkinter.filedialog

文件对话框的返回值为文件路径和文件名

鼠标事件

在python中tkinter模块的事件event都是由字符串描述的:组件对象.bind(event,handler)文章来源地址https://www.toymoban.com/news/detail-493521.html

  • 其中,event为事件,handler为处理事件的函数
  • 鼠标按钮的单击事件的一般格式为
    <ButtonPress-n>
    
  • 其中,n为鼠标按钮,n为1代表左键,n为2代表中键,n为3代表右键
    <ButtonPress-1>
    
    表示按下鼠标的左键
  • 可以通过鼠标事件event获得鼠标位置。坐标点(event.x, event.y)为发生事件时鼠标所在的位置
示例
from tkinter import *

def callback(event):
    print("Click at:", event.x, event.y)
    s = (event.x, event.y)
    txt.set(s)

win = tk.Tk()
win.title("鼠标事件")
win.geometry("1080x720")

frame = Frame(win, width = 1080, height = 720, bg = "cyan")
frame.bind("<Button-1>", callback)
frame.pack()

txt = StringVar()
L = Label(win, width = 20, textvariable = txt)
L.pack()
win.mainloop()

到了这里,关于Python tkinter库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python+tkinter实现图书管理系统(首发)

    2023年08月13日
    浏览(49)
  • python基于Tkinter实现学生信息管理系统

    1.添加学生成绩:管理员可以在系统中添加学生的成绩信息,包括学生姓名、学号、课程名称、成绩等。 2.删除学生成绩:管理员可以根据学生的学号或者姓名删除学生的成绩信息。 3.修改学生成绩:管理员可以修改学生的成绩信息,包括学生姓名、学号、课程名称、成绩等

    2024年02月08日
    浏览(73)
  • 【python】tkinter程序打包成exe可执行文件 全流程记录(windows系统)

    【需求背景】 Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。 我用python写了一个可视化界面,利用算法计算患COVID-19的概率。 现在需要将Python文件编译成exe文件,这样可以直接在Windows上运行,不需要再依赖Python环境,可以复制到其他电脑中直接

    2024年02月01日
    浏览(69)
  • Python小论文-图书管理系统+Python+tkinter+sqlite3+PersistentDB线程池管理

    该系统主要通过tkinter库实现图书管理系统,包含对SQLite3数据库的增删改查的知识点。主要功能有:登录、注册、图书查询、借书、还书、图书录入、图书删除、图书统计、管理员新增、数据库查询等模块。 Python小论文-图书管理系统+Python+tkinter+sqlite3+PersistentDB资源池 Python桌

    2024年02月02日
    浏览(36)
  • python opencv+tkinter 使用tkinter实现交互式图像处理工具

    tkinter 基本控件与使用 我们将学习如何使用Tkinter包编写一些图形用户界面程序。Tkinter是Python的一个标准包,因此我们并不需要安装它。我们将从创建一个窗口开始,然后我们在其之上加入一些小组件,比如按钮,复选框等,并使用它们的一些属性。话不多说,让我们开始吧

    2024年02月10日
    浏览(93)
  • tkinter模块高级操作(一)—— 透明按钮、透明文本框、自定义按钮及自定义文本框

    —— 众所周知,tkinter模块中自带的Button类是无法做到使其透明的(至少我无法做到) 【tip:透明是指让背景颜色或图片穿过按钮而显示出来】 —— 找遍了Button类的所有参数和操作,都无法解决这个问题! —— 但!真的就没有办法做出一个透明的按钮吗? —— 如果你认为

    2024年02月09日
    浏览(39)
  • Python tkinter库

    Tkinter模块是Python系统自带的标准GUI库,具有一套常用的图形组件 基本组件 Button 按钮 Canvas 画布,用于绘制直线、椭圆、多边形等各种图形 Checkbutton 复选框形式的按钮 Entry 单行文本框 Frame 框架,可作为其他组件的容器,常用来对组件进行分组Label 标 签,常用来显示单行文本

    2024年02月09日
    浏览(42)
  • Python GUI编程(Tkinter)

    Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大

    2024年02月14日
    浏览(66)
  • python tkinter显示图片教程

    今天,来给大家讲解一下python tkinter显示图片的方法 首先,我们需要导入tkinter、pillow中的两个包[pillow需要自己下载(pip install pillow)] 接着,创建窗口 然后就可以导入图片啦!!! 所有代码: 运行试试。。。  这就是运行结果(致敬XP(^^ゞ))

    2024年02月08日
    浏览(37)
  • python图形界面教程(tkinter)

    1、图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元素触发指令,并从标签、对话框等图型化显示容器中获取人机对话信息。 Python自带了tkinter 模块,实质上是一种流行的面向对象

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包