python GUI And Tkinter 01

news2024/11/19 8:48:20

目录

一、基础介绍

二、创建窗口

1、创建完窗口后还需要知道窗口的相关属性

2、widget相关控件

3、原本tkinter有的Widget。

4、widget的共同属性

1. Configuration

2. Event Processing

3. Event callbacks

4. Alarm handlersafter(time,callback):间隔指定时间后调用callback( )方法。


一、基础介绍

1.GUI英文全称是Graphical User Interface,中文为图形用户接口。

2.tkinter是一个开放源码的图形接口开发工具,原来是用TCL(Tool Command Language,工具命令语言)编写的GUI函数库,最初发展是从1991年开始,具有跨平台的特性,可以在Linux、Windows、Mac OS等操作系统上执行。这个tkinter工具提供许多图形接口,例如,标签(Label)、菜单(Menu)、按钮(Button)等。

使用tkinter模块,需要导入

from tkinter import *

在使用tkinter模块的时候我们需要检查tkinter的版本

Import tkinter

print(tkinter.TkVersion)

一般8.5以后的版本功能比较健全。

二、创建窗口

我们设计GUI需要先创建窗口

Root=Tk() #root是自定义的Tk对象名称,也可以取其他的

Root.mainloop()#放到程序的最后一行

通常将使用Tk( )方法建立的窗口称为根窗口,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。本例中笔者用root当作对象名称,读者也可以自行取其他名称。上述mainloop( )方法可以让程序继续执行,同时进入等待与处理窗口事件,单击窗口右上方的“关闭”按钮,此程序才会结束。

注:

在GUI程序设计中,有时候也将上述所建立的窗口(window)称为容器(container)。

1、创建完窗口后还需要知道窗口的相关属性

Root.configure(bg='red')#除了可以使用名称直接设置色彩,还可以使用十六进制方式设置色彩RGB,其中每个色彩用两个十六进制数字表示。

geometry( )方法除了可以设置窗口的大小,也可以设置窗口的位置,此时它的语法格式如下。

Geometry(width x height+x+y)

上述widthxheight已说明是窗口的宽和高,width与height用x分隔。“+x”表示x是窗口左边距离屏幕左边的距离,如果是“-x”,则表示x是窗口右边距离屏幕右边的距离。“+y”表示y是窗口上边距离屏幕上边的距离,如果是“-y”则表示y是窗口下边距离屏幕下边的距离。

两种不同的设计方式

在tkinter模块里面可以使用winfo_screenwidth()屏幕宽度和winfo_screenheight()屏幕高度来获取屏幕高度和宽度。

2、widget相关控件

Widget可以翻译为控件或组件或部件。

窗口建立完成后,下一步是在窗口内建立控件,我们将这些控件统称为Widget。

(1)Button(按钮)。

(2)Canvas(画布)。

(3)Checkbutton(多选按钮)。

(4)Entry(文本框)。

(5)Frame(框架)。

(6)Label(标签)。

(7)LabelFrame(标签框架)。

(8)Listbox(列表框)。

(9)Menu(菜单)。

(10)MenuButton(菜单按钮):这个是过时的控件,已经被Menu( )取代。

(11)Message(消息)。

(12)OptionMenu(下拉式菜单)。

(13)PanedWindow(面板)。

(14)Radiobutton(单选按钮)。

(15)Scale(尺度)。

(16)Scrollbar(滚动条)。

(17)Spinbox(可微调输入控件)。

(18)Text(文字区域)。

(19)Toplevel(上层窗口)。

在tkinter中所有的Widget其实都是面向对象的类,我们通过调用构造方法来达到建立相关Widget控件的目的。

加强版的tkinter模块tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk,这个模块中有17个Widget。

3、原本tkinter有的Widget。

(1)Button

(2)Checkbutton

(3)Entry

(4)Frame

(5)Label

(6)LabelFrame

(7)MenuButton

(8)Radiobutton

(9)Scale

(10)Scrollbar

(11)PanedWindow下列是ttk模块新增的Widget。

(1)Combobox。

(2)Notebook。

(3)Progressbar。

(4)Separator。

(5)Sizegrip:可以拖曳最上层窗口右下方更改最上层窗口的大小。

(6)Treeview。

导入上述模块可以使用下列方式。

From tkinter import ttk

如果使用下列方式导入ttk,可以覆盖原先tkinter的控件。

From tkinter import *

From tkinter.ttk import *

使用ttk可以有更好的外观,而且也可以跨平台使用,不过并没有100%兼容。例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。ttk使用的是ttk.Style类别。

4、widget的共同属性

Widget的共同属性设计控件时会看到下列共同属性。

Dimensions:大小。

Colors:颜色。

Fonts:字形。

Anchor:锚(位置参考点)。

Relief styles:属性边框。

Bitmaps:显示位图。

Cursors:鼠标外形。

设计控件时会看到下列常用的共同方法。

1. Configuration

(1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置。

(2)cget("option"):取得option参数值。

(3)keys( ):可以用此方法获得所有该Widget的参数。

2. Event Processing

(1)mainloop( ):让程序继续执行,同时进入等待与处理窗口事件。

(2)quit( ):Python Shell窗口结束,但是所建窗口继续执行。

(3)update( ):更新窗口画面。

3. Event callbacks

(1)bind(event,callback):事件绑定。

(2)unbind(event):解除绑定。

4. Alarm handlersafter(time,callback):间隔指定时间后调用callback( )方法。

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

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

相关文章

Python logging 库的『完整教程』

前言 本文的标题是『完整』。所谓『完整』,大意是想表达:提炼出一组最小的经验组合,并且能够快速应用于工程中,能 work,甚至能完美地 work。这篇文章就是想要做到『如何能完美地work』。 初衷 最原始的初衷就是&…

nmap 扫描数据分析

本案22端口为开放端口,110为未开放端口 Wireshark上使用下面的表达式 ip.addr192.168.104.127 and ip.addr192.168.104.61 and tcp.port22 ip.addr192.168.104.127 and ip.addr192.168.104.61 and tcp.port110 命令一、 nmap -sS SYN-->SYN ACK-->RST …

电脑技巧:Windows这些自带应用尽量不要删,否则影响系统运行

目录 第一种:带有“microsoft”字样的软件尽量不卸载。 第二种:带有“Intel”或者“英特尔”的程序名称不要卸载。 第三种:windows驱动程序包尽量不要卸载 第四种:Adobe flash player不建议卸载 当电脑太卡,运行变…

C/C++ - 从代码到可执行程序的过程

(1)预编译 主要处理源代码文件中的以“#”开头的预编译指令。处理规则见下: 删除所有的#define,展开所有的宏定义。处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。处理“#inc…

简单工厂模式

简单工厂模式所谓组件:从设计上讲,组件就是能完成一定功能的封装体。小到一个类,大到一个系统,都可以称为组件,因为一个小系统放到更大的系统里面去,也就当个组件而已。模式定义:提供一个创建对…

servlet运用自定义分发优化servlet泛滥

servlet优化 Web 层的 Servlet 个数太多了,不利于管理和编写 我们发现每一个功能都需要定义一个 servlet,一个模块需要实现增删改查功能,就需要4个 servlet,模块一多就会造成servlet 泛滥。此时我们就想 servlet 能不能像 servi…

YOLOv6 训练自己的数据集

项目地址:https://github.com/meituan/YOLOv6 论文地址:https://arxiv.org/abs/2209.02976 论文解析:http://t.csdn.cn/0ZQbV YOLOv6 是一种专为工业应用设计的单级对象检测框架,具有硬件友好的高效设计和高性能。YOLOv6-N 在 NVI…

【windows】docker与docker-compose部署spring boot项目

看完不会用,我倒立**,保姆级教学 docker部署项目 采用Dockerfile部署 docker-compose部署项目 docker-compose部署,实际上是对容器的编排,以及容器间的一些依赖 比如一个springboot项目,需要使用redis,…

深入 Redis sds

文末有视频讲解 在上一个模块中,我和小伙伴们一起学习了 Redis 最核心的命令,主要涉及 String、List、Hash、Set、Sorted Set 五种数据结构的命令,同时,我们还介绍了每种数据结构的实战场景,并带领小伙伴们使用 Java 语…

11、ThingsBoard-租户配置

1、概述 租户配置(tenant profile)如其名是租户相关的配置,通俗一点就是给你这个租户的功能增加一些限制,如果你加钱,我就给你把限制设置高一点,thingsboard官方那个收费的版本不就是这样的吗?租户配置在系统层,系统管理员可以创建租户配置,然后使用租户配置为多个租…

centos7安装kubeadm

centos7安装kubeadm 一、基础设置 1、设置主机名 hostnamectl set-hostname master hostnamectl set-hostname node01vim /etc/hosts 192.168.198.169 master 192.168.198.170 note01hostnamectl hostnamectl 是在 centos7 中新增加的命令,它是是用来管理给定主机…

2023年我花费数小时整理的Java常用类进阶学习文档,你学会了吗?

文章目录1. 基本类型的包装类1.1 概念1.2 常用的属性1.3 常用的方法1.4 自动装箱和自动拆箱2. 字符串类2.1 String 类2.2 StringBuilder类2.3 StringBuffer类2.4 StringBuilder 的扩容机制3. 数字常用类3.1 Math 类3.2 Radom 类4. 枚举类5. 日期类5.1 Date 类5.2 DateFormat 类…

基于微信小程序的小区租拼车管理信息系统小程序

文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器…

学习理解10G Ethernet Subsystem之IEEE1588

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 学习理解10G Ethernet Subsystem之IEEE1588前言原理简介one step/two step1PPSIP 设置前言 1588大多是走在报文中,主要通过一些报文交互来完成同步过程&#xff…

在Docker中安装Gitea

目录在Docker中安装Gitea1、拉取最新Gitea官方镜像2、实例化一个Gitea容器3、Gitea需要数据源,因此使用mysql作为后端数据库4、在mysql中创建一个新数据库,起名gitea5、访问Gitea主页http://host:3000,进入初始配置页在Docker中安装Gitea 1、…

【自学Python】Python位运算符

Python位运算符 Python位运算符教程 在 Python 中,位运算符主要是用于 数值类型 的二进制的运算。 Python位运算符语法 位运算符说 明案例备注&按位与a & b返回 a 和 b 相与的结果|按位或a | b返回 a 和 b 相或的结果^按位异或a ^ b返回 a 和 b 相异或的…

FFMpeg 实现视频编码、解码

FFMpeg 作为音视频领域的开源工具,它几乎可以实现所有针对音视频的处理,本文主要利用 FFMpeg 官方提供的 SDK 实现音视频最简单的几个实例:编码、解码、封装、解封装、转码、缩放以及添加水印。 接下来会由发现问题->…

Java中的equals()方法和hashCode的关系

文章目录1.Java中equals()方法比较的是什么?2.equals方法和hashcode的关系3.什么是hashCode3.1 hashcode有什么作用呢?4.关于重写equals()方法的两条规范5.代码实例1.Java中equals()方法比较的是什么? 最直接的回答就是看调用equals()方法的…

联合评测 DapuStor Roealsen5 NVMe SSD在GreatSQL数据据库中的应用探索

1、合作背景 万里开源软件有限公司 ​ 北京万里开源软件有限公司,是专注于国产自主可控数据库产品研发超 20年的国家高新技术企业,参与多个国家级的数据库行业标准制定工作。本次用于测试的 GreatSQL 开源数据库是适用于金融级应用的国内自主 MySQL 版…

Redis 的基础数据结构(一) 可变字符串、链表、字典

这周开始学习 Redis,看看Redis是怎么实现的。所以会写一系列关于 Redis的文章。这篇文章关于 Redis 的基础数据。阅读这篇文章你可以了解: 动态字符串(SDS)链表字典 三个数据结构 Redis 是怎么实现的。 SDS SDS (S…