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

前端挑战:Tkinter布局与设计【三种布局】

前端挑战:Tkinter布局与设计【三种布局】

文章目录

  • 前端挑战:Tkinter布局与设计【三种布局】
    • 前言
    • Frame 窗口组件
      • 代码
      • 效果
    • Tkinter的布局
    • grid 网格布局
      • 效果展示:
      • 代码讲解
    • pack 布局
      • 基本使用
      • 左右布局
    • place 布局
      • 代码
      • 预览

前言

作为一个前端开发,习惯性的用HTML去解决客户端的问题。然而在开发PC客户端的时候,electron 打包太大了,有时候只是简单实现一个PC小工具,就要装一个浏览器内核进去,有点太舞刀弄枪了,而且运行起来内存也超大。

遂学习 python 内置的 tkinter 来做一些小工具。市面上很多教程都是讲组件,个人认为那些只是用到的时候才会查的一些文档,没有什么思考的地方。学过css + html 的都知道,标签什么的都是用到才学,最开始的思路都是布局,页面设计实现。所以写一篇博客,来专门测试、讲解布局。

Frame 窗口组件

本文主要讲的是布局,所以就单纯的使用 Frame 窗口组件来布局。Frame其实是一个容器,用HTML来理解,就是一个 div 标签。里面可以嵌套 Frame 。

代码

import tkinter as tk  # 导入Tkinter模块,用于创建图形用户界面# 实例化Tk对象,创建主窗口
window = tk.Tk()# 设置窗口的标题
window.title('My Window')# 设置窗口的初始大小(宽度x高度)
window.geometry('500x300')# 创建一个Frame,它将作为主窗口内的一个容器
frame = tk.Frame(window , bg='lightblue')# 将Frame添加到主窗口中
frame.pack(expand=True, fill='both')# 进入Tkinter的事件循环,等待用户操作
window.mainloop()

效果

image-20240710114014361

Tkinter的布局

组件的三种布局有三种方式 gridpackplace 。这三种方式可以单独使用也可以,同时使用。去完成一些左右布局,上下布局,圣杯布局,表单布局等等。

grid 网格布局

grid 是网格的意思,这种布局方案是将窗口划分为一个个网格。

import tkinter as tk  # 导入Tkinter模块,用于创建图形用户界面# 实例化Tk对象,创建主窗口
window = tk.Tk()# 设置窗口的标题
window.title('简单布局')# 设置窗口的初始大小(宽度x高度)
window.geometry('500x300'

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于STM32设计的家庭智能健康监测系统(局域网)(185)
  • Elasticsearch:介绍 retrievers - 搜索一切事物
  • 接口基础知识3:详解url
  • C++基础(二十):常见C++11的新特性
  • Unity3D开发之传送带实现
  • C语言——二维数组
  • 检测精度评价指标召回率和精确率
  • C到C嘎嘎的衔接篇
  • [FPGA]-时序传输模型分析
  • Python:while循环
  • Java之Java基础八(方法)
  • Spring webflux基础核心技术
  • Jetson-AGX-Xavier上 时间同步方案GPS+PPS+NTP+PTP
  • 深入理解C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符重载
  • 【laravel+Easyswoole】
  • @jsonView过滤属性
  • 08.Android之View事件问题
  • export和import的用法总结
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript中的对象个人分享
  • leetcode386. Lexicographical Numbers
  • mysql外键的使用
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • oldjun 检测网站的经验
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • react 代码优化(一) ——事件处理
  • 从0到1:PostCSS 插件开发最佳实践
  • 给初学者:JavaScript 中数组操作注意点
  • 关于for循环的简单归纳
  • 简单实现一个textarea自适应高度
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • ​马来语翻译中文去哪比较好?
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (2020)Java后端开发----(面试题和笔试题)
  • (a /b)*c的值
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (理论篇)httpmoudle和httphandler一览
  • (每日一问)基础知识:堆与栈的区别
  • (转)我也是一只IT小小鸟
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .net Application的目录
  • .NET Core WebAPI中封装Swagger配置
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net流程开发平台的一些难点(1)
  • .NET值类型变量“活”在哪?
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor