当前位置: 首页 > news >正文

GUI 之 Tkinter编程

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。

1. Tkinter 之初体验

import tkinter as tkroot = tk.Tk()      # 创建一个窗口root.title('窗口标题')# 添加 label 组件
theLabel = tk.Label(root, text='文本内容')
theLabel.pack()     # 可自动调节组件尺寸root.mainloop()     # 主事件循环

封装版

参数:

# 1. pack() 方法 side 参数:设置对齐方式,有 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOP
pack(side = tk.LEFT)# 2. pack() 方法之 padx、pady 参数:自定义按钮偏移位置
pack(padx = 20, pady = 20)			# 偏移 x、y 20 个像素# 3. 前景算、背景色设置
tk.Button(fg='blue', bg='red')
import tkinter as tkclass Bar:def __init__(self, root):frame = tk.Frame(root)      # 创建一个框架,里面添加一个 button 按钮,框架一般用于将组件分组frame.pack(side=tk.LEFT, padx=20, pady=20)# 创建一个按钮组件,fg(foreground 缩写,即前景色),command:调用函数self.that = tk.Button(frame, text='打招呼', fg='blue', command=self.sya_hi)self.that.pack(side=tk.LEFT)        # side: 对齐 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOPdef sya_hi(self):print('大家好,我是 rose~')root = tk.Tk()
b = Bar(root)root.mainloop()

2. Label 组件

Label 组件用于界面输出描述的标签,一般用作提示。

Label() 部分参数:

  • justify:设置组件中文字对齐方式
  • padx、pady:组件与边框的距离
  • text:文本内容
  • font、fg、bg:文本字体、文字颜色、背景色
  • compound:CENTER,设置文本和图像混合模式(图像作为背景,文字在其上面)
  • textvariable:接收文本对象
# 创建一个文本 label 对象var = StringVar()
var.set('你所下载的。。。')theLabel = Label(textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)`
from tkinter import *root = Tk()textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',justify=LEFT, padx=10)
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式
imageLabel = Label(root, image=photo)
imageLabel.pack(side=RIGHT)mainloop()

Tips: 图片仅支持 .gif 格式

设置背景图片

from tkinter import *root = Tk()photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',justify=LEFT, padx=10, compound=CENTER, image=photo, font=('华康少女字体', 20), fg='blue')
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸mainloop()

3. Button 组件

Button 组件用于实现一个按钮,并且可以接收用户的输入信息。

Button() 参数:

  • command:指定一个函数或方法,当用户点击按钮时,自动调用这个函数。可用来接收用户输入的值
from tkinter import *def func(*args, **kwargs):print(args, kwargs)root = Tk()frame1 = Frame()
frame2 = Frame()# 创建一个文本 label 对象
var = StringVar()
var.set('你所下载的。。。')theLabel = Label(frame1, textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)# 创建一个图形 label 对象
photo = PhotoImage(file='3.gif')
imgLabel = Label(frame1, image=photo)
imgLabel.pack(side=RIGHT)theButton = Button(frame2, text='已满', command=func)
theButton.pack()frame1.pack(padx=10, pady=10)
frame2.pack(padx=10, pady=10)mainloop()

4. CheckButton 组件

Checkbutton 多选按钮,RadioButton 单选按钮。

from tkinter import *root = Tk()# 定义一个变量,以确认该按钮是否被选中
v = IntVar()c = Checkbutton(root, text='测试', variable=v)
c.pack()# 选项被选中,v = 1,否则为 0
# 展示变量 v 的值
l = Label(root, textvariable=v)
l.pack()mainloop()

四个选项

pack() 方法的 anchor 参数可用来设置选项对齐方式,共有八个方向(上北下南左西又东/ N、NE、E、SE、S、SW、W、NW)

from tkinter import *root = Tk()girls = ['西施', '王昭君', '貂蝉', '杨玉环']
v = []for girl in girls:v.append(IntVar())b = Checkbutton(root, text=girl, variable=v[-1])b.pack(anchor=W)        # 设置左对齐mainloop()

Menu 组件

from tkinter import *root = Tk()def callback():print('...')menubar = Menu(root)# 下拉菜单 "文件",添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)filemenu.add_command(label='打开', command=callback)
filemenu.add_command(label='保存', command=callback)
filemenu.add_separator()
filemenu.add_command(label='退出', command=quit)menubar.add_cascade(label='文件', menu=filemenu)# 编辑下拉菜单
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label='剪切', command=callback)
editmenu.add_command(label='拷贝', command=callback)
editmenu.add_command(label='粘贴', command=callback)menubar.add_cascade(label='编辑', menu=editmenu)root.config(menu=menubar)mainloop()

相关文章:

GUI 之 Tkinter编程

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…...

【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、你认为不同角色关…...

后端开发基础能力以及就Java的主流开发框架介绍

前言:java语言开发转后端,必须了解后端主流的一些东西,共勉。 后端开发需要具备以下基础能力: 1.编程语言:熟练掌握至少一门编程语言,如Java、Python、Ruby、PHP、C#等。 2.数据结构和算法:具…...

H2数据库连接时用户密码错误:Wrong user name or password [28000-214] 28000/28000 (Help)

H2数据库连接时用户密码错误: 2023-03-03 08:25:07 database: wrong user or password; user: "SA" org.h2.message.DbException: Wrong user name or password [28000-214]出现的问题配置信息原因解决办法org.h2.message.DbException: Wrong user name or password …...

青岛诺凯达机械盛装亮相2023济南生物发酵展,3月与您相约

BIO CHINA生物发酵展,作为生物发酵产业一年一度行业盛会,由中国生物发酵产业协会主办,上海信世展览服务有限公司承办,2023第10届国际生物发酵展(济南)于2023年3月30-4月1日在山东国际会展中心(济…...

【JAVA程序设计】【C00111】基于SSM的网上图书商城管理系统——有文档

基于SSM的网上图书商城管理系统——有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架开发的网上在线图书售卖商城项目,本项目分为三种权限:系统管理员、卖家、买家 管理员角色包含以下功能: 用户信息管理、权限管理、订…...

基于卷积神经网络CNN的三相故障识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,为节能减排,减少电能损…...

Java工厂设计模式详解,大厂的Java抽象工厂模式分享!

我是好程序员-小源!本期文章主要给大家分享:Java工厂设计模式。文中使用通俗易懂的案例,使你快速学习和轻松上手!一、什么是Java抽象工厂模式1. Java抽象工厂是23种设计模式中创建型模式的一种,Java抽象工厂是由多个工…...

Git 企业级分支提交流程

Git 企业级分支提交流程 首先在本地分支hfdev上进行开发,开发后要经过测试。 如果测试通过了,那么久可以合并到本地分支develop,合并之后hfdev和development应该完全一样。 git add 文件 git commit -m ‘注释’ git checkout develop //切换…...

C/C++每日一练(20230303)

目录 1. 字符串相乘 2. 单词拆分 II 3. 串联所有单词的子串 1. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3"…...

Python3-条件控制

Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程: if 语句 Python中if语句的一般形式如下所示: if condi…...

KDZD地埋电缆故障测试仪

一、产品特性 ★电缆故障测试仪(闪测仪) (1)使用范围广:用于测量各种不同截面、不同介质的各种电力电缆、高频同轴电缆,市话电缆及两根以上均匀铺设的地埋电线等电缆高低阻、短路、开路、断线以及高阻泄漏…...

爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!

中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机,打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术,提供更优质的开放式骨传导听音体验,透过不一样的音质体验,打造更好的骨传导耳机…...

基于Spring Boot+Thymeleaf的在线投票系统

文章目录 项目介绍主要功能截图:后台登录注册个人信息展示投票数据显示首页展示对战匹配分数排行榜部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅…...

【每日一题Day135】LC1487保证文件名唯一 | 哈希表

保证文件名唯一【LC1487】 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用&#xff0…...

计算机系统的基本组成 第一节

一、计算机系统 计算机系统是指:电子数字通用、计算机系统 由硬件和软件两个子系统组成 硬件是保存和运行软件的物质基础 软件是指挥硬件完成预期功能的智力部分 重点: 计算机系统部件 五个 1、数据运算部件:完成对数据的运算处理功能…...

Scrapy爬虫框架入门

Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘、数据监测和自动化测试等领域。下图展示了Scrapy的基本架构,其中包含了主要组件和系统的数据处理流程(图中…...

最新使用nvm控制node版本步骤

一、完全卸载已经安装的node、和环境变量 ①、打开控制面板的应用与功能,搜索node,点击卸载 ②、打开环境变量,将node相关的所有配置清除 ③、打开命令行工具,输入node-v,没有版本号则卸载成功 二、下载nvm安装包 ①…...

Linux内核4.14版本——drm框架分析(1)——drm简介

目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.…...

Google的一道经典面试题 - 767. 重构字符串

文章目录Google的一道经典面试题 - 767. 重构字符串767. 重构字符串1054. 距离相等的条形码结论Google的一道经典面试题 - 767. 重构字符串 767. 重构字符串 题目链接:767. 重构字符串 题目大意:给定一个字符串 s ,检查是否能重新排布其中的…...

E8-公共选择框相关的表

起因 昨天同事和我说,要在一个表单里加一组可选项。于是我去了公共选择框维护。这时候才发了这么个问题,前几天我在本机的测试环境里做的流程,导入到我们的生产环境里,表单里所用到的共公选择框的选项都在,在表单里是…...

再学C语言41:变长数组(VLA)

处理二维数组的函数&#xff1a;数组的行可以在函数调用时传递&#xff0c;但是数组的列只能被预置在函数内部 示例代码&#xff1a; #define COLS 4 int sum(int arr[][COLS], int rows) {int r;int c;int temp 0;for(r 0; r < rows; r){for(c 0; c < COLS; c){tem…...

物联网WEB大屏数据可视化

最近了解WEB大屏显示。一般像嵌入式这类的&#xff0c;MQTT协议会走的多一些&#xff0c;走订阅和发布的策略&#xff0c;网上走了一圈之后&#xff0c;目前有几个实现方案。这里对比一下几个物联网协议&#xff0c;相对而言MQTT更合适物联网&#xff0c;其它几个协议不是干这个…...

新:DlhSoft Gantt Chart for WPF Crack

用于 Silverlight/WPF 4.3.48 的 DlhSoft 甘特图灯光库 改进甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。2023 年 3 月 2 日 - 17:09新版本特征 改进了甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。Silverlight/WPF 标准版的 DlhSoft 甘特图灯光库 DlhSoft …...

C++基础(一)—— C++概述、C++对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)

1. C概述1.1 c简介“c”中的来自于c语言中的递增运算符&#xff0c;该运算符将变量加1。c起初也叫”c withclsss”.通过名称表明&#xff0c;c是对C的扩展&#xff0c;因此c是c语言的超集&#xff0c;这意味着任何有效的c程序都是有效的c程序。c程序可以使用已有的c程序库。为什…...

Rust学习总结之if,while,loop,for使用

目录 一&#xff1a;if的使用 二&#xff1a;while的使用 三&#xff1a;loop的使用 四&#xff1a;for的使用 本文总结的四种语句&#xff08;if&#xff0c;while&#xff0c;loop&#xff0c;for&#xff09;除了loop&#xff0c;其他的三个在C语言或者Python中都是常见…...

Java知识复习(十一)RabbitMQ

1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型&#xff0c;主要负责接收、存储和转发消息 3、Producer和…...

thinkphp图片压缩类

<?php namespace app\lib; /** * 图片压缩类&#xff1a;通过缩放来压缩。 * 如果要保持源图比例&#xff0c;把参数$percent保持为1即可。 * 即使原比例压缩&#xff0c;也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例&#xff0c;则体积会更小。…...

如何将图数据库应用于电影智能推荐

导读 电影&#xff0c;是一种结合视觉与听觉的现代艺术。如今&#xff0c;电影已不单是人们娱乐消遣的生活方式&#xff0c;也逐渐成为国家文化软实力的重要标志之一。据有关数据统计&#xff0c;2021年中国影视行业市场规模达2349亿元&#xff0c;同比增长23.2%&#xff0c;预…...

CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头

效果 实现代码 此处JS代码引入了jquery <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.menu-icon{position: absolute;left: 20%;top: 30%;transition: all .3s;}.menu-icon:before, .menu…...

织梦做企业网站/广东网站seo营销

弦生成器→d3.ribbon()。返回的函数使用二次贝塞尔曲线连接两个圆弧&#xff0c;以构成封闭的弦的路径数据。 从d3.ribbon()返回函数的作用来看&#xff0c;弦其实可分为两部分&#xff0c;一部分为两个圆弧&#xff0c;一部分为二次贝塞尔曲线。贝塞尔曲线是d3.ribbon()返回的…...

wordpress伪静态自定义/百度推广平台登录网址

什么是JDBC?JDBC程序的具体实现步骤JDBC的全称是Java数据库连接&#xff08;Java Database Connectivity)&#xff0c;它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库&#xff0c;并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。应…...

阿里云ecs建网站/最有效的app推广方式有哪些

转自 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html...

php做网站搜索框/策划方案怎么做

Firebug 的年代&#xff0c;我是火狐&#xff08;Mozilla Firefox&#xff09;浏览器的死忠&#xff1b;但后来不知道为什么&#xff0c;该插件停止了开发&#xff0c;导致我不得不寻求一个新的网页开发工具。那段时间&#xff0c;不少人开始推荐 Chrome 浏览器&#xff0c;我想…...

营销型网站有哪些建设流程/西地那非片的正确服用方法

1、原函数 输出结果&#xff1a;1 如图&#xff1a; 2、加window的参数 输出结果&#xff1a;window对象 如图&#xff1a; 注意&#xff1a;此时的window不是全局变量&#xff0c;而是局部变量 3、关于形参必须传window么&#xff1f;当然是不需要的 输出结果&#xff1a;wind…...

做酒店销售上哪个网站好/宁德市公共资源交易中心

叨叨两句 ~SQL习题017 1 题目描述获取所有非manager员工当前的薪水情况&#xff0c;给出dept_no、emp_no以及salary &#xff0c;当前表示to_date9999-01-01CREATE TABLE dept_emp (emp_no int(11) NOT NULL,dept_no char(4) NOT NULL,from_date date NOT NULL,to_date date NO…...