《零基础入门学习Python》第075讲:GUI的终极选择:Tkinter12

Tkinter 的基本组件我们已经介绍得七七八八了,剩下的一些我们在这节课全部都会讲解完毕。

(一)Message组件

Message(消息)组件是 Label 组件的变体,用于显示多行文本消息。众所周知,我们的Label 组件只能显示单行消息。Message 组件能够自动换行,并调整文本的尺寸使其适应给定的尺寸。

我们来举个例子,大家就明白了:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. w1 = tk.Message(root, text = "这是一则短消息", width = 100)

  4. w1.pack()

  5. w2 = tk.Message(root, text = "这是一则骇人听闻的长长长长长长长长长长长消息", width = 100)

  6. w2.pack()

  7. root.mainloop()

(二)Spinbox组件

Spinbox 组件(Tk8.4 新增)是 Entry 组件的变体,用于从一些固定的值中选取一个。众所周知,我们的Entry组件是能够让用户随心所欲输入数据的组件,Spinbox 组件就进一步限制用户输入的数据。

我们还是举个例子:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. w= tk.Spinbox(root, from_ = 0, to = 10)

  4. w.pack()

  5. root.mainloop()

我们可以通过上下点,输入 0 -10,另外,我们还是可以任意输入数据,我们可以通过改变 increment 选项的值,来改变步进。

你还可以通过元组指定允许输入的值:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. w= tk.Spinbox(root, values = ("python", "C", "java", "C#"))

  4. w.pack()

  5. root.mainloop()

(三)PanedWindow组件

PanedWindow 组件(Tk8.4 新增)是一个空间管理组件。跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分。

不明白的话,可以先看下面的两个例子,就会豁然开朗了。

我们的窗格有简单的,例如两个窗格:上和下,左和右。

 
  1. import tkinter as tk

  2. m = tk.PanedWindow(orient="vertical")

  3. m.pack(fill="both", expand=1)

  4. top = tk.Label(m, text="top pane")

  5. m.add(top)

  6. bottom = tk.Label(m, text="bottom pane")

  7. m.add(bottom)

  8. tk.mainloop()

创建一个 3 窗格的 PanedWindow 组件则需要一点小技巧:

 
  1. import tkinter as tk

  2. #先创建左右的窗格

  3. m1 = tk.PanedWindow() #默认是左右分布的

  4. m1.pack(fill="both", expand=1)

  5. left = tk.Label(m1, text = "left pane")

  6. m1.add(left)

  7. m2 = tk.PanedWindow(orient = "vertical")

  8. m1.add(m2)

  9. top = tk.Label(m2, text = "top pane")

  10. m2.add(top)

  11. bottom = tk.Label(m2, text = "bottom pane")

  12. m2.add(bottom)

  13. tk.mainloop()

这里不同窗格事实上是有一条“分割线”(sash)隔开,虽然你看不到,但你却可以感受到它的存在。不信?不妨把鼠标缓慢移动到大概的位置,当鼠标指针改变的时候后拖拽鼠标......

但我们也可以把“分割线”给显式地显示出来,并且可以为它附上一个“手柄”(handle):

 
  1. import tkinter as tk

  2. #先创建左右的窗格

  3. m1 = tk.PanedWindow(showhandle = True, sashrelief = "sunken") #默认是左右分布的

  4. m1.pack(fill="both", expand=1)

  5. left = tk.Label(m1, text = "left pane")

  6. m1.add(left)

  7. m2 = tk.PanedWindow(orient = "vertical", showhandle = True, sashrelief = "sunken")

  8. m1.add(m2)

  9. top = tk.Label(m2, text = "top pane")

  10. m2.add(top)

  11. bottom = tk.Label(m2, text = "bottom pane")

  12. m2.add(bottom)

  13. tk.mainloop()

图中的小方块就是 handle, 默认离边界为 8 个像素,可以通过 handlepad 选项来设置它的位置。

(四)Toplevel 组件

Toplevel 组件和 root 组件是一个级别的,Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏、边框等部件。

Toplevel 组件通常用在显示额外的窗口、对话框和其他弹出窗口上。

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def create():

  4. top = tk.Toplevel()

  5. top.title("Python tkinter")

  6. msg = tk.Message(top, text = "I love Python!")

  7. msg.pack()

  8. tk.Button(root, text = "创建顶级窗口", command = create).pack()

  9. root.mainloop()

想要几个就点几下。

得到的顶级窗口都是相互独立的,但是都是来自于 root 窗口,当 root 窗口关闭后,所有的顶级窗口都被关闭。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

13.7 CentOS 7 环境下大量创建帐号的方法

13.7.1 一些帐号相关的检查工具 pwck pwck 这个指令在检查 /etc/passwd 这个帐号配置文件内的信息,与实际的主文件夹是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错…

机器学习---线性回归、多元线性回归、代价函数

1. 线性回归 回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后 将该数学模型用于预测或者分类。该方法处理的数据可以是多维的。 回归是由达尔文的表兄弟Francis Galton发明的。Galton于1877年完成了第一次回归预测&…

【话题】感觉和身边其他人有差距怎么办?也许自我调整很重要

每个人能力有限,水平高低不同,我们身在大环境里,虽然在同一个起跑线上,但是时间久了,你会发现,并越来越感觉到和身边其他人有了差距,慢慢的会有一定的落差感,怎么办呢!通…

接口请求(get、post、head等)详解

一.接口请求的六种常见方式: 1、Get 向特定资源发出请求(请求指定页面信息,并返回实体主体) 2、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建…

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器,端口分别映射到 8080,8081,8082,使用数据卷挂载,分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/,/opt/module/docker/tomcat3/ROOT2/,/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…

【腾讯云 Cloud studio 实战训练营】搭建Next框架博客——抛开电脑性能在云端编程(沉浸式体验)

文章目录 ⭐前言⭐进入cloud studio工作区指引💖 注册coding账号💖 选择cloud studio💖 cloud studio选择next.js💖 安装react的ui框架(tDesign)💖 安装axios💖 代理请求跨域&#x…

网站无法访问的常见原因

有多种问题可能会阻止用户访问您的网站。本文将解决无法访问网站,且没有错误消息指示确切问题的情况,希望对您有所帮助。 无法访问网站的常见原因有: (1)DNS 设置不正确。 (2)域名已过期。 (3)空白或没有索引文件。 (4)网络连接问题。 DNS 设…

【Spring】(二)从零开始的 Spring 项目搭建与使用

文章目录 前言一、Spring 项目的创建1.1 创建 Maven 项目1.2 添加 Spring 框架支持1.3 添加启动类 二、储存 Bean 对象2.1 创建 Bean2.1 将 Bean 注册到 Spring 容器 三、获取并使用 Bean 对象3.1 获取Spring 上下文3.2 ApplicationContext 和 BeanFactory 的区别3.3 获取指定的…

Python web实战之 Django 的 MVC 设计模式详解

技术栈:Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中,MVC(Model-View-Controller)模式是一种非常常见的设计模式,它可以帮助我们更好地管理代码,提高代码的可维护性。今天就介绍如何使用 …

无人机巢的作用及应用领域解析

无人机巢作为无人机领域的创新设备,不仅可以实现无人机的自主充电和电池交换,还为无人机提供安全便捷的存放空间。为了帮助大家更好地了解无人机巢,本文将着重解析无人机巢的作用和应用领域。 一、无人机巢的作用 无人机巢作为无人机技术的重…

卷积神经网络【图解CNN】

文章目录 1.卷积运算2.池化3.全连接层 卷积神经网络可以看作一个函数或者黑箱,输入就是图片的像素阵列,输出就是这个图片是什么? 图片是X,那么就输出‘x’,图片是‘O’,那么就输出O; 在计算机眼中&#xff…

MySQL索引1——基本概念与索引结构(B树、R树、Hash等)

目录 索引(INDEX)基本概念 索引结构分类 BTree树索引结构 Hash索引结构 Full-Text索引 R-Tree索引 索引(INDEX)基本概念 什么是索引 索引是帮助MySQL高效获取数据的有序数据结构 为数据库表中的某些列创建索引,就是对数据库表中某些列的值通过不同的数据结…

C语言笔试题训练【第一天】

目录 第一题 第二题 第三题 第四题 第五题 大家好,我是纪宁。 从今天开始博主会日更一些经典的C语言笔试题,持续20天左右。题目类型为5道选择题加2道编程题,希望能和大家一起进步。 第一题 1.读程序,下面程序正确的输出是&…

【Java可执行命令】(十二)依赖分析工具jdeps:通过静态分析字节码并提取相关信息来实现依赖分析 ~

Java可执行命令之jdeps 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 可选参数&#xff1a;jdeps -dotoutput < dir>3.3 可选参数&#xff1a;jdeps -s3.4 可选参数&#xff1a;jdeps -v3.5 可选参数&#xff1a;jdeps -cp < path>3.6 注意事项&#xff1…

【雕爷学编程】 MicroPython动手做(35)——体验小游戏2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

TensorRT学习笔记--基于TensorRT部署YoloV3, YoloV5和YoloV8

目录 1--完整项目 2--模型转换 3--编译项目 4--序列化模型 5--推理测试 1--完整项目 以下以 YoloV8 为例进行图片和视频的推理&#xff0c;完整项目地址如下&#xff1a;https://github.com/liujf69/TensorRT-Demo git clone https://github.com/liujf69/TensorRT-Demo.…

iPhone 8 Plus透明屏有哪些场景化应用?

iPhone 8 Plus是苹果公司于2017年推出的一款智能手机&#xff0c;它采用了全新的玻璃机身设计&#xff0c;使得手机更加美观和时尚。 而透明屏则是一种新型的屏幕技术&#xff0c;可以使手机屏幕呈现出透明的效果&#xff0c;给人一种科技感十足的视觉体验。 透明屏是通过使用…

Selenium Chrome Webdriver 如何获取 Youtube 悬停文本

导语 Youtube 是一个非常流行的视频分享平台&#xff0c;有时候我们可能想要爬取一些视频的信息&#xff0c;比如标题、播放量、点赞数等。但是有些信息并不是直接显示在网页上的&#xff0c;而是需要我们将鼠标悬停在某个元素上才能看到&#xff0c;比如视频的时长、上传时间…

Linux NUMA架构(非统一内存访问)

NUMA架构 NUMA Architecture| Non Uniform Memory Access Policy/Model | Numa Node Configuration (CPU Affinity) NUMA架构产生的原因 cpu的高速处理功能和内存存储直接的速度会严重影响cpu的性能。传统的计算机单核架构,cpu通过内存总线(内存访问控制器)直接连接到一…

Ubuntu安装harbor(http模式)并随便上传一个

Ubuntu安装harbor&#xff08;http模式&#xff09; docker和harbor的介绍就免了&#xff0c;都不知道啥东西&#xff0c;还安装搞毛 先安装docker环境 不要问&#xff0c;软件源之类的配置&#xff0c;挨个梭就行 sudo apt update sudo apt install apt-transport-https ca…
最新文章