《Python+Kivy(App开发)从入门到实践》自学笔记:StackLayout布局

2023-11-06 12:20

本文主要是介绍《Python+Kivy(App开发)从入门到实践》自学笔记:StackLayout布局,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

章节目录与知识点总揽

2.9 StackLayout布局

        StackLayout布局——堆栈布局

        在此布局中,只要不超过布局的范围,就可以进行垂直或水平地排列子项,且各个小部件的大小可以不必相同。StackLayout布局可以通过orentation属性制定布局方向。默认为“lr-tb”。

        解释:

                l、r、t、b都为单词首字母:

                        l ——left           表示左

                        r ——right        表示右

                        t ——top          表示上

                        b ——bottom   表示下

                        ‘lr’表示从左到右,'rl'表示从右到左;‘tb’表示自上到下,'bt'表示自下而上。因此orientation属性共有8个属性:

                        按行排列:‘lr-tb’、‘lr-bt’、‘rl-tb’、‘rl-bt’;

                        按列排列:‘tb-lr’、‘bt-lr’、‘tb-rl’、‘bt-rl’。

2.9.1 使用步骤

        1.新建一个main.py文件。

        2.导入App类以及相关的包,例如:StackLayout、Button

        3.创建一个类让它继承App类。

        4.在该类内实现build()方法

        5.编写具体的布局或布局类,让其继承StackLayout类。

        6.在build()方法结尾返回具体的布局或布局类。

        7.通过run()方法运行实例。


 
2.9.2 在py内引用StackLayout布局

        新建main.py文件,使用for循环生成25个按钮,内容如下:

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.stacklayout import StackLayout
from kivy.graphics import Rectangle, Colorclass StackLayoutWidget(StackLayout):def __init__(self,**kwargs):super().__init__(*kwargs)#设置背景色,可忽略with self.canvas:Color(1,1,1,1)self.rect = Rectangle(pos=self.pos,size=self.size)self.bind(pos=self.update_rect,size=self.update_rect)#自动生成25个按钮,分别以0-24命名,每一个按钮间隔5for i in range(25):btn = Button(text=str(i),width=40+i*5,size_hint=(None,0.15))self.add_widget(btn)def update_rect(self,*args):self.rect.pos = self.posself.rect.size = self.sizeclass StackApp(App):def build(self):return StackLayoutWidget()if __name__ == '__main__':StackApp().run()

        运行main.py,一次排列生成了25个按钮,结果如下图:

7a7e6c0ddb234ee1bce2aabf422a68d3.png

2.9.3 在kv内使用StackLayout布局

        更改main.py文件内容如下:

from kivy.app import App
from kivy.uix.stacklayout import StackLayoutclass StackLayoutWidget(StackLayout):def __init__(self,**kwargs):super().__init__(**kwargs)class StackApp(App):def build(self):return StackLayoutWidget()if __name__ == '__main__':StackApp().run()

        根据StackApp类名,新建一个stack.kv文件,内容如下:

<StackLayoutWidget>:orientation:'lr-tb'canvas:Color:rgba:[1,1,1,1]Rectangle:size:self.sizepos:self.posButton:text:'B1'size_hint:[.2,.1]Button:text:'B2'size_hint:[.2,.1]Button:text:'B3'size_hint:[.2,.1]Button:text:'B4'size_hint:[.2,.1]Button:text:'B5'size_hint:[.2,.1]Button:text:'B6'size_hint:[.2,.1]Button:text:'B7'size_hint:[.2,.1]Button:text:'B8'size_hint:[.2,.1]Button:text:'B9'size_hint:[.2,.1]

        运行结果如下图:

c3cc1bca31e64a46a5e775068006f783.png

 2.9.4 布局的基本属性

        除去布局方向orientation外,StackLayout还可以使用padding和spacing属性来控制布局和部件、部件和部件之间的距离。StackLayout布局还会根据子部件来自动设置一些属性,例如:minimum_height最低高度、minimum_width最小宽度、minimum_size最小尺寸(同时设置最低高度和最小宽度)

padding属性可以接受以下三种参属形式:

        [padding_left,padding_top,padidng_right,padidng_bottom],例如默认的[0,0,0,0],分别代表着与左、上、右、下四个方向的边距都为0。
        [padding_horizontl,padding_vertical]分别代表水平和垂直两个方向的间距。
        [padding]代表四周的间距


Spacing属性可以接受以下两种参数形式:
        [spacing_horizontal,spacing_vertical]分表代表水平和垂直两个方向的间距。
        [spacing]代表四周的间距。

        在stack.kv文件中加入spacing和padding属性,具体代码如下:

<StackLayoutWidget>:orientation:'lr-tb'padding:[20,10]spacing:[20,10]canvas:Color:rgba:[1,1,1,1]Rectangle:size:self.sizepos:self.posButton:text:'B1'size_hint:[.2,.1]Button:text:'B2'size_hint:[.2,.1]Button:text:'B3'size_hint:[.2,.1]Button:text:'B4'size_hint:[.2,.1]Button:text:'B5'size_hint:[.2,.1]Button:text:'B6'size_hint:[.2,.1]Button:text:'B7'size_hint:[.2,.1]Button:text:'B8'size_hint:[.2,.1]Button:text:'B9'size_hint:[.2,.1]

        运行结果如下:

71b127c7effe495998aa1bb515db62c8.png
       

上一篇:ScatterLayout布局

下一篇:​ 动手实践——计时器:基本布局 ​

 

这篇关于《Python+Kivy(App开发)从入门到实践》自学笔记:StackLayout布局的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/356589

相关文章

Python实现文件下载、Cookie以及重定向的方法代码

《Python实现文件下载、Cookie以及重定向的方法代码》本文主要介绍了如何使用Python的requests模块进行网络请求操作,涵盖了从文件下载、Cookie处理到重定向与历史请求等多个方面,... 目录前言一、下载网络文件(一)基本步骤(二)分段下载大文件(三)常见问题二、requests模块处理

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex