GUI界面开发之tkinter(一)

news2024/9/21 20:40:21

Tkinter是一个内置的Python库,用于创建图形用户界面(GUI)。它提供了一组工具和小部件,用于创建窗口、对话框、按钮、菜单和其他GUI元素。

在本篇文章中,主要介绍了窗口等知识点。

大家好!我是码银🥰

欢迎关注🥰:

CSDN:码银

公众号:码银学编程

一、创建窗口

from tkinter import*

win = Tk()
win.mainloop()

tkinter创建的基础窗口样式如下: 

二、设置窗口属性

在Python中,特别是使用Tkinter库创建图形用户界面(GUI)时,会遇到一些用于控制窗口属性的方法。下面我将基于Tkinter库给出一些简单的示例。

1. title()

title() 方法用于设置窗口的标题。在Tkinter中,你可以直接对窗口对象调用这个方法。

from tkinter import*

win = Tk()
win.title("窗口属性")

win.mainloop()

2. 几何尺寸设置

在Tkinter中,可以使用 geometry("widthxheight") 方法来设置窗口的初始大小和位置。geometry() 方法接受一个字符串参数。

win.geometry("400x300")  # 设置窗口初始大小为400x300

3. maxsize(width,height) 和 minsize(width,height)

在Tkinter中,可以使用 maxsize() 和 minsize() 方法来限制窗口的最大和最小尺寸。

win.minsize(200, 100)  # 设置窗口最小尺寸为200x100  
win.maxsize(800, 600)  # 设置窗口最大尺寸为800x600

4. configure(bg=color)

configure() 方法用于配置窗口或窗口部件的多个选项。在Tkinter中,你可以使用它来改变背景颜色、字体等。对于背景颜色,bg 是常用的选项名。

win.configure(bg="lightblue")  # 或者使用 win.config(bg="lightblue")


5. resizable(True,True)

resizable() 方法用于控制窗口的哪些边可以调整大小。在Tkinter中,你可以通过传递两个布尔值来分别控制水平和垂直方向的调整大小能力。

win.resizable(True, True)  # 允许窗口在水平和垂直方向上调整大小

6. iconify() 和 iconbitmap()

  • iconify() 方法用于将窗口最小化到任务栏(或等效的窗口管理器位置)。
  • iconbitmap() 方法用于设置窗口的图标。
import tkinter as tk

win = tk.Tk()
win.iconify()  # 最小化窗口
win.iconbitmap('path_to_icon.ico')  # 设置窗口图标

三、设置窗口位置

win.geometry(widthxheight+x+y)

(widthxheight+x+y)的格式为 ("宽度x高度+x偏移+y偏移")。

假如说,下面的整个图片是一个窗口,那么X,Y值就是下图中所示窗口左上角顶点位置。

import tkinter as tk

# 创建主窗口
win = tk.Tk()
win.geometry("200x300+100+100")
win.mainloop()


win.geometry(widthxheight-x-y)

同理,使用上面这个函数,它的X,Y值就代表了窗口右下角位置的坐标。

import tkinter as tk

# 创建主窗口
win = tk.Tk()
win.geometry("200x300-100-100")
win.mainloop()

示例(将窗口固定在屏幕中间位置):

import tkinter as tk

def center_window(root, width=300, height=200):
    # 获取屏幕宽度和高度  
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()

    # 计算窗口的x和y坐标,使得窗口居中  
    x = (screen_width // 2) - (width // 2)
    y = (screen_height // 2) - (height // 2)

    # 设置窗口的几何形状(大小+位置)  
    root.geometry(f"{width}x{height}+{int(x)}+{int(y)}")


# 创建Tkinter窗口
win = tk.Tk()
win.configure(bg="lightblue")  
win.title("屏幕中央的窗口")

# 调用函数来设置窗口大小和在屏幕上的位置  
center_window(win)

# 进入Tkinter的主事件循环  
win.mainloop()

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

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

相关文章

STM32MP135裸机编程:烧录程序到EMMC的方法

0 前言 STM32MP135支持多种启动方式,包括SD卡、NAND Flash、EMMC等,基于STM32MP135裸机的SD卡烧录操作方法我们之前已经介绍过,现在介绍的STM32MP135烧录到EMMC的方法又和前面烧录到SD卡的操作有所不同。本文将介绍基于STM32MP135&#xff0…

缓存的击穿及解决方案

定义及图解 缓存击穿的意思是对于设置了过期时间的key,缓存在某个时间点过期的时 候,恰好这时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把…

Flutter 调用Google内购支付最新教程

前言: 各位同学大家好, 之前看到有人在群里问flutter 怎么调用Google支付, 今天就准备整理写一篇文章。 效果图 实现方式: 我们是通过flutter和安卓交互 然后在原生安卓里面加入了内购支付结算库的依赖 最后调起的Google 支付 安卓原生内购支付教程 flutter 端代码 我…

Go: IM系统开发及注意事项

概述 使用Go语言打造支持,同时十万人在线的IM系统系统单机支持十万人,如果分布式部署后,支持数百万都是可以的IM 系统, 即时通讯(Instant Messaging),比如说我们的微信,QQ 等IM 系统,它具备非常…

软件测试服务公司分享:系统测试和验收测试有什么联系和区别?

软件系统测试是指对软件系统的各个模块、组件以及整个系统进行全面检查和验证的过程。它旨在检测系统的功能是否符合需求、是否能够正常运行以及是否存在潜在的问题。在软件开发的整个生命周期中,系统测试是一个非常重要且必不可少的环节。 软件验收测试是软件在开…

vs code 启动react项目,执行npm start报错原因分析

1.执行 npm start错误信息:npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 npm start ~~~ CategoryInfo …

记录些Spring+题集(1)

接口防刷机制 接口被刷指的是同一接口被频繁调用,可能是由于以下原因导致: 恶意攻击:攻击者利用自动化脚本或工具对接口进行大量请求,以消耗系统资源、拖慢系统响应速度或达到其他恶意目的。误操作或程序错误:某些情…

【正点原子i.MX93开发板试用连载体验】录音小程序采集语料

本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 接下来就是要尝试训练中文提示词。首先要进行语料采集,这是一…

C双指针元素去重

需求 在尾部插⼊、删除元素是⽐较⾼效的&#xff0c;时间复杂度 是 O(1)&#xff0c;但是如果在中间或者开头插⼊、删除元素&#xff0c;就会涉及数据的搬移&#xff0c;时间复杂度为 O(N)&#xff0c;效率较低。 代码 #include <stdio.h>// 相邻元素去重 int remove…

Linux-管道

管道&#xff1a;把一个命令的输出&#xff0c;通过管道连接&#xff0c;作为另一个命令的输入。管道的工作原理是通过一段共享内存来实现数据的传输&#xff0c;其中一个进程向管道写入数据&#xff0c;另一个进程则从管道的另一端读取数据。 1.可以通过ls -lh罗列出当前文件…

Smartbi体验中心升级新装,全产品线沉浸式体验

为了让用户更好地了解Smartbi产品在数据分析中的价值和能力&#xff0c;优化用户的产品体验&#xff0c;我们近期对Smartbi在线体验中心进行了全新改版和系统调优。本次更新内容包括全新首页、全新行业示例Demo、新增产品核心功能Demo&#xff0c;并优化了现有的Demo。让我们一…

直播预告|V学院|干货预警!2.5D、流光、动效?一次掌握!

随着可视化行业持续发展&#xff0c;可视化设计随之不断进化升级&#xff0c;对于设计师的视觉审美、设计能力和灵活运用等要求也随之进阶。可视化设计越来越卷了&#xff0c;设计师需要了解市场上的热点效果、优秀案例&#xff0c;持续学习&#xff0c;才能随行业发展不断进步…

C基础day9

一、思维导图 二、课后练习 1> 使用递归实现 求 n 的 k 次方 #include<myhead.h>int Pow(int n,int k) {if(k 0 ) //递归出口{return 1;}else{return n*Pow(n,k-1); //递归主体} }int main(int argc, const char *argv[]) {int n0,k0;printf("请输入n和k:&…

合合TextIn - 大模型加速器

TextIn是合合信息旗下的智能文档处理平台&#xff0c;在智能文字识别领域深耕17年&#xff0c;致力于图像处理、模式识别、神经网络、深度学习、STR、NLP、知识图谱等人工智能领域研究。凭借行业领先的技术实力&#xff0c;为扫描全能王、名片全能王等智能文字识别产品提供强大…

Jeecgboot vue3的选择部门组件JSelectDept如何实现只查询本级以及子级的部门

jeecgboot vue3的文档&#xff1a;地址 JSelectDept组件实现了弹窗然后选择部门返回的功能&#xff0c;但部门是所有数据&#xff0c;不符合需求&#xff0c;所以在原有代码上稍微改动了一下 组件属性值如下&#xff1a; 当serverTreeDatafalse的时候&#xff0c;从后端查询…

在uniapp中如何使用地图

1&#xff0c;技术选择 最好是使用webview html形式加载&#xff0c;避免打包app时的地图加载问题 2&#xff0c;webview使用 使用webview必须按照官方文档,官网地址&#xff1a;https://uniapp.dcloud.net.cn/component/web-view.html <template><view><!…

windows电脑的linux虚拟机连接电脑网络的方法

一、虚拟机新建网络适配器,将其设置为NAT模式 子网等信息就不知道该设置什么网段的先就设置为192.168.0.x,后面可以修改 二、电脑设置 1.网络和Internet>高级网络设置 2.编辑虚拟网络NAT适配器 &#xff08;1&#xff09;选中"自动获取ip地址",确认 3.编辑WLAN…

【后端开发实习】用Redis实现消息队列邮件发送

简介 用Resi本身封装的方法相比于调redis-smq库&#xff0c;实现方式就要简单朴素很多&#xff1a; 调用redis本身的List数据结构的Lpush实现消息的进队。用Redis的List数据结构的brpop方法实现消息的出队。将出队消息通过邮件方法发送给指定的用户。 生动形象理解就是用redi…

RabbitMQ 实现简易即时通讯

设计思路 利用消息队列的特性进行消息投递&#xff0c;假设客户端 A 要与客户端 B 进行通信。 客户端 A &#xff1a;创建队列 A-B &#xff0c;发送的消息推送到 A-B 队列&#xff0c; 绑定 B-A 队列&#xff0c;接收 B-A 队列推送给客户端的消息。 客户端 B &#xff1a;创建…

ROS2入门到精通—— 2-2 ROS2实战:运动规划仿真环境Nav2搭建和导航测试

1 Nav2总体架构 头文件源文件约八万行 安装cloc&#xff1a;sudo apt install cloc bigdavidbigdavid-Legion-Y9000P-IRX8:~/Nav2$ cloc .1137 text files.1133 unique files. 57 files ignored.github.com/AlDanial/cloc v 1.90 …