Python程序开发——第十一章 图形用户页面编程

news2024/11/15 11:46:40

目录

  • 一、图形用户界面与tkinter
  • 二、tkinter的根窗口
    • (一)根窗口的创建
    • (二)根窗口的基本方法
  • 三、几何布局管理器
    • (一)pack布局
    • (二)grid布局
    • (三)place布局
  • 四、tkinter组件
    • (一)标签
    • (二)按钮
    • (三)文本框

一、图形用户界面与tkinter

python中可以通过图形用户界面,即GUI来进行图形页面应用程序开发,tkinter是python的默认GUI,是一个内置模块,可以说是其标准GUI库,与其它GUI相比,它操作简单、可移植性(可以在大多数的 Unix 平台下使用,同样可以应用在 Windows和 Mac系统)等等,可以通过import thinterfrom tkinter import *导入该模块。

import thinter

from tkinter import *

二、tkinter的根窗口

(一)根窗口的创建

在进行图形用户页面编程之前首先要创建一个根窗口(主窗口),通过tkinter模块中的TK类的构造函数创建一个根窗口对象,每个程序只能有一个根窗口,但允许有多个子窗口,为确保使该图形用户页面总处于运行状态,可以使用mianloop()方法,使其进入消息循环。
例如下列python代码:

import tkinter

window=tkinter.Tk() #创建一个根窗口对象window
window.mainloop()   #进入消息循环

运行结果如下,生成了一个根窗口:
在这里插入图片描述

(二)根窗口的基本方法

可以通过基本方法来设置根窗口,如下:
1、title()用于设置窗口的名称;
2、resizable()用于设置窗口的可调性,默认情况下都是可以调节的可以不用设置;
3、geometry()用于设置根窗口的大小,该方法接收一个宽×高+x轴偏移量+y轴偏移量格式的字符串。
4、quit()用于退出窗口;
5、updata()用于刷新页面。
例如下列python代码,创建一个根窗口对象window,且设置根窗口名称和使其可调:

import tkinter

window = tkinter.Tk()  # 创建一个根窗口对象window
window.title("我的GUI页面")  # 设置根窗口的名称
window.resizable()  # 使根窗口可调,即可任意调节其长宽
window.mainloop()  # 进入消息循环

运行结果如下:
在这里插入图片描述
可以对窗口进行调节:
在这里插入图片描述

三、几何布局管理器

通过几何布局管理器可以布局tkinter中的组件,分为pack、grid和place三种,在同一父窗口中只能使用一种几何布局管理器

(一)pack布局

pack布局可看成一个容器/包装,调用pack()方法将组件添加至父组件中,它有几个属性:
1、expand设置组件的填充方法;
2、fill设置组件是否填充额外的空间,取值可为none、x、y或both;
3、side设置组件的分布方式,取值可为Top、botton、left或right,默认值为top。

(二)grid布局

调用grid()方法可实现将父组件分割成一个二维表格,它有几个属性:
1、row设置组件所在行;
2、column设置组件所在列;
3、rowspan设置组件占据的行数。

(三)place布局

调用place方法可将组件放在一个特定的位置,它有几个属性:
1、anchor设置组件的其它选项的位置;
2、relx、rely设置相对窗口宽度和高度的位置,取值范围为[0,1.0],其中relx=0.5,rely=0.5处于中心;
3、x、y设置绝对布局的坐标,单位为px。

四、tkinter组件

(一)标签

Label标签用于显示信息,可以显示文本和位图,通过Label类的构造方法Label()创建标签。
该组件有以下常用的属性:

属性功能
anchor设置文本和图像的位置,默认为center
background设置标签的背景颜色
borderwidth设置标签边框宽度(px),默认值为2px
foreground设置前景色
height设置标签的高度
width设置标签的宽度
image设置标签上显示图像
padx文本左侧和右侧的附加填充
pady文本上侧和下侧的附加填充
state标签状态
justify设置对齐方式,默认为center
text设置文本
relief设置标签样式,默认为flat
例如下列python代码:
import tkinter

window = tkinter.Tk()
a = tkinter.Label(window, anchor="s", height=20, width=30, text="HELLO WORLD!", background="yellow")  # 创建一个标签
a.pack()  # 通过pack()方法布局
window.mainloop()

运行结果如下:
在这里插入图片描述

(二)按钮

通过Button类的构造方法Button()即可创建一个按钮对象,该组件有以下常用的属性:

属性功能
activebackground鼠标放上去时按钮的背景颜色
activeforeground鼠标放上去时按钮的前景色
background按钮的背景颜色
borderwidth边框宽度,默认为2个像素
foreground正常前景(文字)颜色
height高度
width宽度
image要显示的图像
padx文字左侧和右侧的附加填充
pady文字上方和下方的附加填充
text按钮的文字内容
command点击按钮时触发的动作

例如下列python代码,创建一个按钮,按钮为黑色,点击按钮显示内容:

import tkinter

window = tkinter.Tk()
b = tkinter.Button(window, text="HELLO WORLD!", background="black")
b.pack()
window.mainloop()

运行结果如下:
在这里插入图片描述
点击按钮,按钮显示内容:
在这里插入图片描述

(三)文本框

例如下列python代码:

import tkinter

widows=tkinter.Tk()
E=tkinter.Entry(widows,width=50,fg='red',background='blue')
E.pack()
widows.mainloop()

运行结果如下:
在这里插入图片描述
可以在文本框中输入文字:
在这里插入图片描述
……

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

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

相关文章

【Android】将手机屏幕投屏到电脑上控制的解决方案

有没有听说scrcpy呢,是投屏工具,通过它就可以实现把手机屏幕投屏到电脑上了,有此帮助,离实现目标更近了一步。 首先,去开源站点GitHub那里下载获取scrcpy 压缩包,根据自己的电脑系统选择下载即可&#xff…

NginxTomcat架构的动静分离和负载均衡

目录 一、Tomcat的多实例部署 1.创建 kgc 和 benet 项目目录和文件 2.修改 Tomcat 主配置文件 3.客户端浏览器访问验证 二、NginxTomcat负载均衡架构原理 2.1 Nginx负载均衡的主要配置 2.2 NginxTomcat负载均衡的优点 三、NginxTomcat负载均衡实验 1.部署Nginx 负载…

SNP受邀参加“赛意力量·全国行”相聚合肥,RISE with SAP

伴随着全球数字化程度的不断加深,IT和OT逐步走向原生融合,以价值链重构倒逼产业转型的结构升级趋势已日益明显。在旺盛的市场需求与机遇下,企业的IT投入涌现出爆发式增长态势,对于IT系统“高效支撑以保障业务先赢”的能力要求已不…

Linux——权限

1.Linux权限的概念 Linux权限是指用于限制对文件和目录的访问的安全机制。文件和目录的权限由三个部分组成:所有者权限、同组用户权限和其他用户权限。每个部分又包括读、写、执行三种权限。这些权限决定了用户能否对文件或目录进行读、写、执行等操作。 2.Linux…

MinGW编译OpenCV 过程记录

1.下载源码opencv-3.4.10.zip ,可以在OpenCV官网下载Releases - OpenCV 解压缩如下: 2.下载Mingw64工具,需要支持posix 并设置系统环境目录,下载的文件名x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z (可以在网上找) 3.使用Cmake工具构建…

Linux学习之分区和挂载磁盘配额

先分区然后格式化。 fdisk /dev/sdb开始分区。 输入p,然后按下Enter,可以查看当前设备的分区情况。 输入d,然后按下Enter,就可以删除上边的分区,要是有多个分区,会让你选择删除哪个分区。 输入n&…

MySQL注入-SQLi-Less3笔记

起手?id1给个参数看看反应 产生报错,关注后面的内容 //从报错信息中的1)就可以推断出SQL语句应该是WHERE XX(id)//那就需要考虑如何将 单引号和括号,提前关闭并且执行我们想要的语句就可以了 知道了语句,直接拼接 ?id1) and 12 union sel…

1。解释型语言和编译型语言

1、解释: 在计算机编程中,编译型语言和解释型语言是两种不同的语言类型。它们的主要区别在于代码的执行方式。编译型语言(Compiled Language)是指在程序运行之前需要经过编译器编译成可执行文件的语言。编译器会将编写好的代码转换…

基于matlab对于未校准立体图像校正(附源码)

一、前言 此示例说明如何计算两个未校准图像的校正,其中相机内禀函数未知。 立体图像校正将图像投影到公共图像平面上,以使相应的点具有相同的行坐标。此过程对于立体视觉很有用,因为 2-D 立体对应问题被简化为 1-D 问题。例如,…

java中跳出最外层的循环

public static void forTest() {int a 3;tab: for (int i 0; i < a; i) {System.out.println("我是i...." i);for (int j 0; j < a; j) {System.out.println("我是j...." j);if (j 1) {break tab;}}}}

linux用户权限相关内容查看

1 用户信息 创建用户一个名为 webuser 的账号&#xff0c;并填写相应的信息&#xff1a; rootiZ94fabhqhuZ:~# adduser webuser Adding user webuser ... Adding new group webuser (1000) ... Adding new user webuser (1000) with group webuser ... Creating home direc…

#systemverilog#进程控制问题#(三)进程监视

关于内建类:process SystemVerilog中内建了一种class,可以对进程进行访问和控制,此种class就是process,我们先来看下process类的原型: 图8 process类中定义了一个枚举变量state,表示当前进程的几种执行状态:FINISHED,RUNNING,WAITING,SUSPENDED,KILLED。 另外,还…

StarRocks--被 Databricks CEO 提及的数据库

Databricks 介绍 Databricks是一家美国的大数据独角兽公司&#xff0c;由 Apache Spark 的创建者所创立。Databricks 开源了 Delta Lake--基于 Apache Spark 的下一代数据湖存储引擎。Delta Lake 是目前市面上主流的数据湖存储引擎之一&#xff0c;与 Apache Hudi 和 Apache Ic…

十、less语法2

目录&#xff1a; 1.详解 1.详解 1.less 里面是可以直接进行数值运算 .box1{// 在less,所有数值都可以进行运算 &#xff0c;- * /width: 100px 100px;height:100px/2;background-color: #bfa;}2.在less中引入模块xx.less // import用来将其他的less引入到当前的less,相当于…

EasyCVR长时间运行后,级联到上级平台的通道无法播放是什么原因?

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持多协议、多类型的设备接入&#xff0c;可实现的功能包括&#xff1a;视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群以及平台级联等&am…

使echarts图例legend只选中一个(selectedMode)

例如&#xff1a;两个块选中第一个&#xff0c;第二个自动取消&#xff0c;选第二个&#xff0c;第一个取消 selectedMode: single,

有了PMP证书还有必要学习CSPM吗?CSPM含金量咋样?

建议学习&#xff0c;CSPM 相当于是 PMP 的本土化&#xff0c;是中国的项目管理&#xff0c;在中国自然还是本土的更适合国情&#xff0c;有CSPM还是更好找工作些。 CSPM认证6月1号才正式开启&#xff0c;现在是福利期&#xff0c;PMP持证者不用参加考试可以直接走换证流程&am…

Java【代码 16】Milvus向量库工具类和SeetaSDK获取人像向量和属性的工具类分享

Milvus向量库和SeetaSDK工具类分享 1.Milvus向量库工具类2.SeetaSDK工具类 1.Milvus向量库工具类 Milvus的Maven依赖&#xff1a; <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.1.0<…

利用Ettercap进行钓鱼攻击

原理:利用ARP协议特性,使用ettercap在内网不断的发送和抢答MAC地址,让受害者访问网关及DNS服务器实际均为攻击者的服务器。 前言&#xff1a;Ettercap是一款流行的网络安全工具&#xff0c;可用于网络嗅探、欺骗和分析攻击。它可以截获网络流量&#xff0c;使用户可以查看到传输…

Sql Injection — 注入攻击原理-2(实战)

还是实战&#xff0c;如果没什么事的话几乎每天日更 目录 前言一、总结 前言 sql实战-2 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、 公司的新闻网 我们进入一篇文章&#xff0c;我们发现这个网页应该是ASP动态网页文件 还记得第一篇文章的sq…