python的tkinter(图形用户界面)

news2024/12/23 13:36:11

目录标题

  • 什么是图形用户界面(GUI)
  • Tinter
  • 函数和参数说明(常用)
  • Lable(标签):
  • 效果
  • Button(按钮)
    • 效果
  • Entry(文本框)
    • 效果
  • Text (多行文本框)
  • Canvas(画布)
    • 效果
  • Message(消息弹窗)
  • 效果

什么是图形用户界面(GUI)

图形化用户界面,就是可以拉近人和计算机的距离,让人在使用软件以及应用程序的时候更加方便,让人可以更容易的使用程序员开发的程序
我们生活中比较常见的GUI有:QQ的登录程序,window的系统操作桌面

Tinter

它是 Python 官方推荐的 GUI 工具包,他是属于python标准库中自带的模块,所以不用使用pip下载,直接引用就可以

函数和参数说明(常用)

请添加图片描述

Lable(标签):

显示不可编辑文本

# 引入tkinter模块
import tkinter as tk
# 实例化
window  = tk.Tk()
# 设置图形化窗口的大小
window.geometry('500x300')
# 窗口名称
window.title("图形化界面")
# 设置标签
l1 = tk.Label(window,text='this is tkinter !',bg='pink',font=('Arial', 12),width=15,height=5)
# 放置标签并且显示出来
l1.pack()
# 让窗口进行循环显示
window.mainloop()

我们需要注意的地方就是设置图形化大小的地方’x‘是小写x不是乘号

效果

在这里插入图片描述

Button(按钮)

点击按钮执行某种操作

# 引入tkinter模块
import tkinter as tk
# 实例化
window  = tk.Tk()
# 设置图形化窗口的大小
window.geometry('500x300')
# 窗口名称
window.title("图形化界面")
# 设置点击要执行的函数
def hit():
    print('点击按钮')
B1 = tk.Button(window,text="按钮",command=hit)
# 放置标签并且显示出来
B1.pack()
# 让窗口进行循环显示
window.mainloop()

效果

在这里插入图片描述

Entry(文本框)

单行可输入文本框

# 引入tkinter模块
import tkinter as tk
# 实例化
window  = tk.Tk()
# 设置图形化窗口的大小
window.geometry('500x300')
# 窗口名称
window.title("图形化界面")
# 设置一个变量
v1 = tk.StringVar()
# 设置单行可输入的文本框
e1 = tk.Entry(window,textvariable=v1)
# 为了更直观的查看效果,我们在这里加一个按钮函数
def hit():
    print(e1.get())
b1 = tk.Button(window,text='输出文本',command=hit).pack()
# 放置标签并且显示出来
e1.pack()
# 让窗口进行循环显示
window.mainloop()

效果

在这里插入图片描述

Text (多行文本框)

用于输入和显示文本的部件
这个方法他有两种插入方式(1、在光标处插入 2、在结尾插入)

# 引入tkinter模块
import tkinter as tk
# 实例化
window  = tk.Tk()
# 设置图形化窗口的大小
window.geometry('500x300')
# 窗口名称
window.title("图形化界面")
# 设置一个变量
v1 = tk.StringVar()
# 设置单行可输入的文本框
e1 = tk.Entry(window,textvariable=v1)
# 为了更直观的查看效果,我们在这里加一个按钮函数
# 设置在光标处插入文本
def hit():
    t1.insert('insert',v1.get())
def hit1():
    t1.insert('end',v1.get())
# 设置按钮
b1 = tk.Button(window,text='光标处插入',command=hit)
b2 = tk.Button(window,text='尾部插入',command=hit1)
# 设置text部件
t1 = tk.Text(window,height=5)
# 放置标签并且显示出来
e1.pack()
b1.pack()
b2.pack()
t1.pack()
# 让窗口进行循环显示
window.mainloop()

在这里插入图片描述

Canvas(画布)

画布故名思意就是一个类似于画布的一个部件我们可以在上面放置土图片,也可以在上面画一些类似于直线,半圆,⚪,以及矩形。还可以配置函数通过按钮部件进行对图像的移动

# 引入tkinter模块
import tkinter as tk
# 实例化
window  = tk.Tk()
# 设置图形化窗口的大小
window.geometry('500x300')
# 窗口名称
window.title("图形化界面")
# 设置画布
canvas = tk.Canvas(window,bg='pink',width=500,height=300)
# 放置图片
image_file = tk.PhotoImage(file='python.gif')
image = canvas.create_image(250, 0, anchor='n',image=image_file)
# 画⚪
oval = canvas.create_oval(10,10,100,100,fill='black')
# 直线
line = canvas.create_line(120,10,100,100)
# 扇形
arc  = canvas.create_arc(150,150,300,200,start=0,extent=180,fill='yellow')
# 矩形
retc = canvas.create_rectangle(200,200,300,300,fill='red')
# 设置移动函数
def move():
    canvas.move(retc,10,10)
# 设置按钮并且放置
b1 = tk.Button(window,text='move',command=move).pack()
# 放置并且显示
canvas.pack()
# 让窗口进行循环显示
window.mainloop()

效果

初始效果图
在这里插入图片描述
移动后
在这里插入图片描述

Message(消息弹窗)

通过弹出窗口的方式对用户进行提醒

import tkinter as tk  # 使用Tkinter前需要先导入
import tkinter.messagebox  # 要使用messagebox先要导入模块
 
# 第1步,实例化object,建立窗口window
window = tk.Tk()
 
# 第2步,给窗口的可视化起名字
window.title('My Window')
 
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('500x300')  # 这里的乘是小x
 
# 第5步,定义触发函数功能
def hit_me():
    tkinter.messagebox.showinfo(title='提示', message='提示')              
    tkinter.messagebox.showwarning(title='警告', message='警告')       
    tkinter.messagebox.askquestion(title='询问', message='询问')
    tkinter.messagebox.askyesno(title='询问', message='询问')  
    tkinter.messagebox.askokcancel(title='询问', message='询问') 
# 第4步,在图形界面上创建一个标签用以显示内容并放置
tk.Button(window, text='点击', bg='pink', font=('Arial', 14), command=hit_me).pack()
 
# 第6步,主窗口循环显示
window.mainloop()

效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kaggle学习笔记-otto-baseline4-本地CV的构建

总览 步骤 1 - 生成候选 对于每个测试用户,我们生成可能的选择,即候选人。、我们从 5 个来源生成候选人: 点击、购物车、订单的用户历史记录测试周期间最受欢迎的 20 次点击、购物车、订单具有类型权重的点击/购物车/订单到购物车/订单的共…

中国芯片奇才,仅用三年打破欧美垄断,创造奇迹

有这么一位中国人,打破了欧美长达10年的芯片技术垄断。这位最该追的星,她是谁?又是如何让欧美芯片领域闻风丧胆。早在2017年,芯片国产化已接近50%,然而25g以上芯片却仅有3%,该技术一直掌握在欧美等发达国家…

融云任杰:激活组织生命力 让听见炮火的人做决策 | TGO专访

任杰,融云联合创始人兼首席科学家,TGO 鲲鹏会(北京)学员;曾就职于微软和神州泰岳等公司,在微软两次获得全球杰出员工奖,曾负责中国联通搭建 WAP 网关、增值业务管理平台;在神州泰岳期…

数据结构(线性表及顺序表)

目录 线性表 线性结构定义 常见线性结构 线性表 顺序表及其实现 顺序结构 顺序表的存储映像图 顺序表seqList及操作的定义(seqList.h) 顺序表基本操作的实现分析 查找操作 实现代码 插入操作 实现代码 删除操作 实现代码 顺序表应用——…

手绘图说电子元器件-集成电路

集成电路是高度集成化的电子器件,具有集成度高、功能完整、可靠性好、体积小、重量轻、功耗低的特点,已成为现代电子技术中不可或缺的核心器件。 集成电路可分为模拟集成电路和数字集成电路两大类,包括集成运放、时基集成电路、集成稳压器、门电路、触发器、计数器、译码器…

【 uniapp - 黑马优购 | 分类界面 】创建cate分支、数据获取、动态渲染

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

【Lilishop商城】No4-4.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-web端第三方授权联合登录接口开发

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代…

机器学习——支持向量机(SVM)

文章目录1. 优化目标2. 大间距的直观理解3. 大间距分类背后的数学支持向量机(Support Vector Machines)是广泛应用于工业界和学术界的一种监督学习算法,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。下面从SVM的优…

【nowcoder】笔试强训Day10

目录 一、选择题 二、编程题 2.1井字棋 2.2密码强度等级 一、选择题 1.下列运算符合法的是&#xff08; &#xff09; A. && B. <> C. if D. : 逻辑与&&语法规则&#xff1a;表达式1&&表达式2&#xff0c;其中两个表达式都是布尔表达式…

LeetCode453.最小操作次数使数组元素相等

LeetCode刷题记录 文章目录&#x1f4dc;题目描述&#x1f4a1;解题思路&#x1f4dc;题目描述 给你一个长度为 n 的整数数组&#xff0c;每次操作将会使 n - 1 个元素增加 1 。 返回让数组所有元素相等的最小操作次数。 示例1 输入&#xff1a;nums [1,2,3] 输出&#xff1a…

EduIQ Network LookOut Administrator

EduIQ Network LookOut Administrator 网络了望管理员允许您从屏幕的远端实时监视计算机。您可以随时看到他们在做什么。除了计算机控制&#xff0c;您还可以捕获摩西和键盘用户。使用Network LookOut Administrator软件可以完成一些有用的工作&#xff1a; 远程儿童计算机控制…

记录一次Gstreamer运行报错排查

背景 系统&#xff1a;Ubuntu 20.04 显卡型号&#xff1a;RTX 2060 之前正常运行的Gstreamer的编解码代码&#xff08;有用到显卡硬件加速&#xff09;&#xff0c;突然运行报错。经过一番折腾&#xff0c;最终找到原因&#xff0c;是因为NVIDIA驱动近期更新了&#xff0c;与…

Node.js——模块化(一)

1. 模块化的基本概念 1.1 什么是模块化 1. 编程领域中的模块化 1.2 模块化规范 2. Node.js 中的模块化 2.1 Node.js 中模块的分类 2.2 加载模块 加载自定义模块给相对路径 ./是平级&#xff08;同一文件夹下调用&#xff09; //这是07.test.js代码 // 注意&#xff1a;在使用…

Cypress笔记-连接命令

.each() 作用 遍历数组数据结构&#xff08;具有 length 属性的数组或对象&#xff09; cy.get(.connectors-each-ul>li).each(function($el, index, $list){ //遍历每个li元素console.log($el, index, $list)}).its() 作用 获取对象的属性值 示例代码 cy.get(.conne…

MergeTree概述

概述 Clickhouse 中最强大的表引擎当属 MergeTree &#xff08;合并树&#xff09;引擎及该系列&#xff08;MergeTree&#xff09;中的其他引擎。MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中&#xff0c;数据可以以数据片段的形式一个接着一个的快速写入&am…

DonkeyCar [02] - 软件配置 - 上位机(windows)

前言&#xff1a;在windows下配置Donkey Car的上位机&#xff1a; 1 安装miniconda Python Conda是开源的管理系统&#xff0c;Miniconda是conda的开源最小安装。 Donkey的默认安装版本&#xff0c;3.7&#xff0c;Miniconda已经是 最新的版本&#xff0c;是3.10.8吧&#xf…

IB如何选科更有助于大学申请?

如果你准准备选择就读IB课程体系&#xff0c;IB选科颇为重要的&#xff0c;选课对于提升自己的竞争力是非常重要的&#xff0c;可以说合理的选课&#xff0c;是申请外国大学的奠基石。IB课程不同于其他两种课程体系&#xff0c;它并不以某个国家的课程体系为基础&#xff0c;而…

02、Java 数据结构:时间复杂度与空间复杂度

时间复杂度与空间复杂度1 场景理解1.1 场景11.2 场景21.3 场景31.4 场景41.5 代码实现2 时间复杂度2.1 渐进时间复杂度2.2 从基本操作执行次数推导出时间复杂度2.3 两种方法来计算2.4 四个场景的时间复杂度分析2.5 大 O 表达式的优劣3 空间复杂度4 时间复杂度和空间按复杂度关系…

《计算机网络》——第四章知识点

第四章思维导图如下&#xff1b; 网络层向上只提供灵活的、无连接的、尽最大努力交付的数据报服务&#xff0c;主要任务是把分组&#xff08;IP数据报)从通过路由选择与转发从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。 互联网可以由多种异构网络互连…

基于Shell编程完成定时备份数据库,看这篇就够了

一. 前言 最近文哥班里有一个学员面试成功上岸&#xff0c;在公司开发时遇到了这么一个需求&#xff1a;领导要求他编写一个shell脚本&#xff0c;完成定时备份数据库的需求。由于他对linux以及shell编程不是很了解&#xff0c;这位学员感到束手无策&#xff0c;于是就求助文哥…