保姆级别操作掌握UI布局,Python简化的UI应用展示【建议收藏】

简介: 正式的Python专栏第6篇,同学站住,别错过这个从0开始的文章!

前面,学委写了一个保姆级别UI教程,展示了 【一个窗口放两个按钮,点击来提示不同消息】,挺受欢迎的。

但那布局比较简单,本来打算安排开发签到程序的,但有必要教会一下布局(打好基础之后,干啥都快,还能胜任复杂的UI应用开发!)

image.png

什么是布局?

布局就是谋划部署干一件大事,跑偏了。这里的布局描述的是UI应用中的组件摆放。


简单理解布局,就像搞室内设计定制一样,在大厅定制个桌椅,搞个茶具,通过精心布置设计让住户心情愉悦!


搞UI类/界面应用开发,也是如此,再界面放置几个按钮,表格,给用户直接操作反馈数据(这个也是开发需要掌握学习的基础,就加进来分享了)


好了,Python内置的Tk UI套件有三种布局,但是下面主要谈谈Grid(网格布局)。


谈谈Tk的网格布局

网格布局,很直观,就是网格化,像表格一样


第一行第一列 第一行第二列

第二行第一列 第二行第二列

这就是网格布局的原型了,没错就这么简单。我们将要开发的UI应用如下:


2x2 的表格布局,上面放置4个按钮,每行两个。


image.png

这个怎么做出来呢?

直接看下面代码

这个代码在前一篇的基础上修改,使用grid方法,传入了一些方位的参数。

保存下面代码为tkui_lxw_demo.py并运行。

# -*- coding: utf-8 -*-
# @Time : 2021/8/29 11:58 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : tkui_layout.py
# @Project : hello
from tkinter import *
import tkinter.messagebox as mb
top = Tk()
top.title("雷学委的Tkinter布局Demo")
top.geometry('600x400')
def open_msg_box():
    mb.showinfo("[学委温馨提示]", "简单的消息弹出窗口!")
def open_err_box():
    mb.showerror("[学委温馨提示]", "演示错误消息窗口!")
#这里加上01和02在按钮显示文本上。
first = Button(top, text="点击01->查看消息", fg="tomato", command=open_msg_box)
second = Button(top, text="点击02->查看错误", fg="tomato", command=open_err_box)
#学委前一篇文章这里注释掉
# first.pack()
# second.pack()
#--- 雷学委CSDN代码展示 ---#
#然后添加两个按钮放在第二行
button03 = Button(top, text="点击03->查看消息", fg="tomato", padx=8, pady=8,
                  background="blue",
                  highlightbackground="blue")
button04 = Button(top, text="点击04->查看错误", fg="tomato", padx=8, pady=8,
                  background="green",
                  highlightbackground="green")
#好,下面学委展示用grid布局(也就是网格布局)
first.grid(row=0, column=0, sticky=W)
second.grid(row=0, column=1, sticky=W)
button03.grid(row=1, column=0, sticky=W)
button04.grid(row=1, column=1, sticky=W)
#老套路,调用事件循环保持UI程序不退出。
top.mainloop()

代码讲解

通过观察,我们主要是使用了grid函数,它接受了3个参数。

  • row 把ui组件放在第几排,从0开始
  • column 把ui组件放在第几列,从0开始
  • sticky 放置的方位W是表示朝向西边。

上面的grid放置组件的代码就是告诉程序:

image.png

学会了吗?运行程序就能看到上面的布局了。

image.png

in或in_ 这个选项,可以将该组件放到该选项指定的父组件中, 指定的组件必须是该组件的父组件。这个默认即可。

我们下面试试把,上面的表格可以多看无需记忆!

image.png

代码如下:

这里学委不贴全部了,直接在上面代码的按钮3(就是这一行开始*#— 雷学委CSDN代码展示 —#*)的位置开始覆盖为下面的代码。

保存文件,重新运行即可。

#--- 雷学委CSDN代码展示 ---#
# 然后添加两个按钮放在第二行
button03 = Button(top, text="点击03->查看消息", fg="tomato", padx=8, pady=8,
                  background="blue",
                  highlightbackground="blue")
button04 = Button(top, text="点击04->查看错误", fg="tomato", padx=8, pady=8,
                  background="green",
                  highlightbackground="green")
button05 = Button(top, text="点击05 放满第三行", fg="tomato", padx=8, pady=8,
                  background="green",
                  highlightbackground="green")
# 好,下面学委展示用grid布局(也就是网格布局)
first.grid(row=0, column=0, sticky=W)
second.grid(row=0, column=1, sticky=W)
button03.grid(row=1, column=0, sticky=W)
button04.grid(row=1, column=1, sticky=W)
button05.grid(row=2, column=0, columnspan=2, sticky=W+E) #放在在第三排,列合并,同时设置W+E铺满第三列。
# 老套路,调用事件循环保持UI程序不退出。
top.mainloop()

延伸

很多大型复杂的UI其实就是一个一个网格布局不断套用迭代起来的。掌握上面的核心布局可以推演,开发出更多层次的界面。


Tk还有其他两种布局,学委主要并非UI开发,我认为另外的要么过于粗放要么过于细致,不便于快速开发(喜欢细抠的可以看看place布局)。布局思想不仅限于Tk,或者Python,很多UI方案都有类似的概念(流式布局,网格布局,精准位置摆放),掌握一种其实可以通吃,因为雷学委十年前就玩Swing应用开发很熟练了。。。


后面再分享更多应用,没事多把上面的参数试试。


如果读到这,会想一下上面第一排的按钮都有很大缝隙的?请问怎么铺满?欢迎评论区作答。


目录
相关文章
|
开发者 容器
44.[HarmonyOS NEXT RelativeContainer案例一] 掌握组件锚点布局:打造灵活精准的UI定位系统
在HarmonyOS NEXT的UI开发中,精确控制组件位置是构建复杂界面的关键。RelativeContainer作为一种强大的布局容器,通过锚点系统提供了精确定位能力,使开发者能够创建出灵活且精准的UI布局。本教程将详细讲解如何使用RelativeContainer的锚点布局功能,帮助你掌握这一核心技术。
463 4
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1288 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
编解码 UED 开发者
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发之常见布局
本文主要介绍了自适应布局与响应式布局的相关内容。自适应布局部分涵盖线性布局、层叠布局、弹性布局和网格布局,详细说明了各布局的特性及使用方法,例如线性布局中的排列、拉伸与缩放,弹性布局的方向、换行与对齐方式等。响应式布局则重点讲解了栅格系统和媒体查询,阐述如何通过栅格组件和媒体查询条件实现不同设备上的适配效果。这些技术帮助开发者灵活应对多尺寸屏幕的设计需求,提升用户体验。
743 55
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
本篇将带你实现一个虚拟音乐控制台。用户可以通过界面控制音乐的播放、暂停、切换歌曲,并查看当前播放的歌曲信息。页面还支持调整音量和动态显示播放进度,是音乐播放器界面开发的基础功能示例。
664 80
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用
本篇教程将介绍如何创建一个模拟记账应用,通过账单输入、动态列表展示和实时统计功能,学习接口定义和组件间的数据交互。
621 68
「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用
|
流计算 UED
「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现
本篇教程将带你实现一个简易购物车功能。通过使用接口定义商品结构,我们将创建一个动态购物车,支持商品的添加、移除以及实时总价计算。
565 69
「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现
|
定位技术 容器
48.[HarmonyOS NEXT RelativeContainer案例五] 精确表单布局:辅助线定位技术打造专业级UI
在HarmonyOS NEXT的UI开发中,表单是常见且重要的界面元素。创建对齐精确、布局合理的表单需要精细的定位控制。RelativeContainer提供的辅助线(Guideline)功能,为表单布局提供了强大的支持。本教程将详细讲解如何使用RelativeContainer的辅助线功能实现精确的表单布局,帮助你掌握这一专业级UI技术。
380 7
|
人工智能 自然语言处理 API
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
UI-TARS Desktop 是一款基于视觉语言模型的 GUI 代理应用,支持通过自然语言控制电脑操作,提供跨平台支持、实时反馈和精准的鼠标键盘控制。
7423 17
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
|
前端开发
「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
本篇教程将带你实现一个数字填色小游戏,通过简单的交互逻辑,学习如何使用鸿蒙开发组件创建趣味性强的应用。
617 20
「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
|
UED
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。
535 13
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统

推荐镜像

更多