python kivy制作GUI界面---ScreenManager多界面跳转

目录

  • 介绍
  • 项目演示
  • 代码示例

介绍

由于开了新的项目,需要制作适合一次开发多端多环境运行的桌面端项目,找了大部分的项目,目前主推的框架主要有:kivy、wxpython、electron等可以快速开发的,由于项目预测体积不会太大,所以暂时不考虑PyQt啦,多了不少,少了不唠,直接进入主题。

项目演示

kivy登陆跳转视频

代码示例

由于项目需要多界面跳转,所以所有界面都要交给ScreenManager进行管理

  1. 项目结构
    -kivy-build 项目名称
    –image 背景图片和图标存放处
    —icon 图标存放
    –view 界面视图主要文件夹
    —home 首页界面
    —login 登陆界面
    —tools 工具类存放处
    –MainApp.py 项目的入口
    –package.py 打包类

  2. 项目入口:MainApp.py

    from kivy.core.window import Windowfrom kivy.app import App
    from kivy.uix.screenmanager import ScreenManagerfrom view.home.HomeScreen import HomeScreen
    from view.login.LoginScreen import LoginScreenclass MainApp(App):def __init__(self):super().__init__()self.sm = Nonedef build(self):# 设置窗口大小为800*600Window.size = (800, 600)# 窗口居中Window.pos_hint = {'center_x': 0.5, 'center_y': 0.5}# 在主布局中self.sm = ScreenManager()# 注册登陆界面组件self.sm.add_widget(LoginScreen(name='login'))# 注册首页界面组件self.sm.add_widget(HomeScreen(name='home'))return self.smif __name__ == '__main__':MainApp().run()
  3. 登陆界面: view.login.LoginScreen.py

    import randomfrom view.tools import Tools
    from kivy.metrics import dp
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.button import Button
    from kivy.uix.image import Image
    from kivy.uix.popup import Popup
    from kivy.uix.screenmanager import Screen
    from kivy.uix.textinput import TextInputclass LoginScreen(Screen):def __init__(self, **kwargs):super(LoginScreen, self).__init__(**kwargs)# 关闭按钮self.close_button = None# 最小化按钮self.minimize_button = Noneself.password = Noneself.username = Noneself.background_image = Image(source='image/login_background.jpg',  # 替换为你的图片路径size_hint=(1, 1),  # 让图片占满整个屏幕allow_stretch=True,  # 允许图片拉伸以适应屏幕keep_ratio=False  # 不保持图片比例)

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

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

相关文章

FPGA:有限状态机

从以下6个实验理解状态机的概念 开发板频率为 50 M H z 50MHz 50MHz,一个时钟周期是 20 n s 20ns 20ns。 1、实验一:LED灯亮0.25秒、灭0.75秒的状态循环 通过之前的分析,我们实现频闪灯时,是让led灯在0.5秒实现一次翻转,而这里…

【我的OpenGL学习进阶之旅】讲一讲GL_TEXTURE_2D和GL_TEXTURE_EXTERNAL_OES的区别

在使用OpenGL ES进行图形图像开发时,我们常使用GL_TEXTURE_2D纹理类型,它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景,可以用于展示静态贴图、渲染2D图形和进行图像处理等操作。 另外,有时我们需要从Camera或外部视频源读取数据帧并进行处理。这时,我们…

经典文献阅读之--World Models for Autonomous Driving(自动驾驶的世界模型:综述)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时&…

linux-conda环境安装配置教程

以下是一个超详细的Linux-Conda环境安装教程,该教程涵盖了从系统准备到环境配置的全过程: 一、准备工作 确认系统环境: 确认操作系统的版本和系统架构。可以通过以下命令获取这些信息:uname -a lsb_release -a这些命令将显示你的内核版本、系统名称、硬件架构和操作系统版…

html+css 实现水波纹按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

python重命名图片

在Python中,获取图片路径并根据当前时间戳重命名图片通常涉及以下几个步骤: 确定图片的原始路径:首先,你需要知道图片的当前位置。获取当前时间戳:然后,使用Python的datetime模块来获取当前时间的时间戳。…

vue3前端开发-小兔鲜项目-使用pinia插件完成token的本地存储

vue3前端开发-小兔鲜项目-使用pinia插件完成token的本地存储!实际业务开发中,token是一个表示着用户登录状态的重要信息,它有自己的生命周期。因此,这个参数值必须实例化存储在本地中。不能跟着pinia。因为pinia是基于内存设计的模…

事务和函数索引

事务 事务的定义 事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。 事务的特点 一个事务中如果有一个数据库操作失败,那么整个 事务…

若依框架 : 生成代码

6.生成代码 6.1.配置生成设置 ruoyi-generator -> src -> main -> resources -> generator.yml 由于 案例中 表都有 前缀 为 tta_ , 这里设置去掉 6.2.生成代码 6.2.1.导入数据库中的表 6.2.2.修改设置 6.2.2.1.设置生成信息 点击 编辑 -> 生成信息 特别…

SqlServer 使用T-SQL单纯的复制表数据

今天用Sql Server Manager Studio 先复制一个库建立一个新库出来,各种报错,也不知道是为什么,连备份再还原都不行,算了,自己写个SQL 脚本来执行算了...... 坏处是视图,存储过程和函数都没有复制过来 -- 设…

m4a怎么转mp3?m4a转mp3的几种方法教程

m4a怎么转mp3?M4A音频格式的全称MPEG-4 Audio,是一种音频压缩格式。这种格式以其卓越的音质和相对较小的文件大小而广受欢迎,尤其是在音乐存储、在线流媒体以及音频编辑等领域。M4A格式被广泛应用于苹果公司的产品中,如iPhone、iP…

开放式耳机会成为未来的主流吗?开放式耳机推荐指南

开放式耳机是否会成为未来的主流,是一个值得探讨的问题。 从目前的市场趋势和技术发展来看,有一些因素支持开放式耳机可能成为主流。 一方面,人们对于健康和舒适的关注度不断提高。长时间佩戴传统耳机可能导致耳部不适,而开放式…

在Linux中,部署及优化Tomcat

tomcat概述 自 2017 年 11月编程语言排行榜 Java 占比 13%,高居榜首,Tomcat 也一度成为 Java开发人员的首选。其开源、占用系统资源少、跨平台等特性深受广大程序员喜爱。本章主要学习如何部署 Tomcat 服务,根据生产环境实现多个虚拟主机的配置&#xf…

【QGroundControl二次开发】五.python生成自定义MAVLink消息及使用

一 . 环境配置 参考&#xff1a; MAVLink代码生成-C# 二. 生成MAVLINK协议 在MAVlink源码下找到message_definitions/common.xml&#xff0c;修改其中的内容。 例如&#xff1a; <message id"12" name"DISTANCE_SENSOR"><description>Dedi…

【Code Complete2】Note-1 [启发式编程、管理复杂度、隐藏设计]

【Code Complete2】_Note-1 [启发式编程、管理复杂度、隐藏设计] 文章目录 【Code Complete2】_Note-1 [启发式编程、管理复杂度、隐藏设计]启发式编程管理复杂度隐藏设计--减少“改动所影响的代码量” 启发式编程 ​ **设计是一个启发的过程&#xff0c;充满了不确定性&#…

记录|cmd方式恢复U盘中的数据

目录 前言一、CMD恢复Step1.Step2. 更新时间 前言 参考文章&#xff1a; u盘数据误删怎么恢复&#xff1f;安利8款数据恢复软件免费版&#xff08;2024 NEW&#xff09; 回家后&#xff0c;家人说U盘里的歌突然没有了。我就用电脑看了看&#xff0c;发现电脑中能看到U盘中是满的…

nodejs和vue做web版的MySQL数据库设计

要使用 Node.js 和 Vue.js 创建一个 Web 版本的 MySQL 数据库设计工具,需要构建一个前后端分离的应用程序。下面开始从易到难构建应用程序。 1. 环境准备 确保你的开发环境中安装了以下软件: Node.jsnpm (Node.js 包管理器)MySQL 数据库Vue.js CLI (可选)2. 创建项目结构 …

修改启动方案

AMP设置为1Linux&#xff08;CPU0&#xff09; 3HAL&#xff08;CPU1、 2、 3&#xff09; 配置。 用vscode打开its 配置文件rk3568_amp_linux.its文件修改 /* SPDX-License-Identifier: BSD-3-Clause */ /** Copyright (c) 2022 Rockchip Electronics Co., Ltd.*//dts-v1/; /…

【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现

1 绪论 1.1 研究背景与意义 在气候变化日益受到全球关注的背景下&#xff0c;天气气温的变化已经对人们的生活各方面都产生了影响&#xff0c;人们在外出时大多都会在手机上看看天气如何&#xff0c;根据天气的变化来决定衣物的穿着和出行的安排。[1]如今手机能提供的信息已经…

寄生组合式继承

寄生组合式继承&#xff08;Parasitic Combination Inheritance&#xff09;是 JavaScript 中实现继承的一种方式&#xff0c;它结合了组合继承和寄生继承的优点&#xff0c;同时避免了组合继承中的性能问题。组合继承会导致父类构造函数被调用两次&#xff0c;而寄生组合式继承…