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

Python + Qt Designer构建多界面GUI应用程序:Python如何调用多个界面文件

引言

Qt Designer是一个用户友好的图形用户界面设计工具,它可以帮助开发人员通过拖放的方式快速创建界面。在实际开发中,往往需要设计多个界面文件,并在Python代码中进行统一管理和使用。本文将介绍如何在Python中使用Qt Designer设计好的多个界面文件的常用方法。

方法一:单独加载并显示

如果界面文件相对独立,并且没有复杂的依赖关系,可以考虑单独加载并显示每个界面文件。

from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow# 加载并显示界面文件1
Form1, Window1 = uic.loadUiType("form1.ui")
app = QApplication([])
window1 = Window1()
form1 = Form1()
form1.setupUi(window1)
window1.show()# 加载并显示界面文件2
Form2, Window2 = uic.loadUiType("form2.ui")
window2 = Window2()
form2 = Form2()
form2.setupUi(window2)
window2.show()# 运行应用程序
app.exec_()

在这个例子中,首先通过uic.loadUiType()方法加载并获取UI类,然后创建窗口对象并显示界面。需要注意的是,如果有多个界面文件,代码会变得冗长,不易管理。

方法二:使用TabWidget进行管理

如果界面文件之间有一定的关联性,可以考虑将它们组合在一个TabWidget中进行管理。每个界面文件对应一个Tab页,用户可以通过切换Tab页来访问不同的界面。

以下是一个示例代码,演示如何使用TabWidget来管理多个界面文件:

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QApplicationapp = QApplication([])# 加载Tab Widget界面
ui_file = "tabwidget.ui"
ui = uic.loadUi(ui_file)# 加载并添加界面文件1
form1, window1 = uic.loadUiType("form1.ui")
widget1 = window1()
form1.setupUi(widget1)
ui.tabWidget.addTab(widget1, "Tab 1")# 加载并添加界面文件2
form2, window2 = uic.loadUiType("form2.ui")
widget2 = window2()
form2.setupUi(widget2)
ui.tabWidget.addTab(widget2, "Tab 2")# 显示Tab Widget
ui.show()app.exec_()

在这个示例中,我们首先加载一个TabWidget的UI文件,然后分别加载界面文件1和界面文件2,并在TabWidget中分别添加这两个界面文件。最终,用户可以通过切换Tab页来访问不同的界面。

图片

方法三:使用QStackedWidget进行管理

除了TabWidget,还可以使用QStackedWidget来管理多个界面文件。与TabWidget不同,QStackedWidget不是使用Tab页的形式来切换界面,而是通过索引来管理不同的界面堆栈。用户可以通过索引值来切换不同的界面。

以下是一个示例代码,演示如何使用QStackedWidget来管理多个界面文件:

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QApplicationapp = QApplication([])# 加载Stacked Widget界面
ui_file = "stackedwidget.ui"
ui = uic.loadUi(ui_file)# 加载并添加界面文件1
form1, window1 = uic.loadUiType("form1.ui")
widget1 = window1()
form1.setupUi(widget1)
ui.stackedWidget.addWidget(widget1)# 加载并添加界面文件2
form2, window2 = uic.loadUiType("form2.ui")
widget2 = window2()
form2.setupUi(widget2)
ui.stackedWidget.addWidget(widget2)# 显示Stacked Widget
ui.show()app.exec_()

在这个示例中,我们首先加载一个QStackedWidget的UI文件,然后分别加载界面文件1和界面文件

2,并在QStackedWidget中分别添加这两个界面文件。最终,用户可以通过切换不同的索引来访问不同的界面。

总结

在本文中,我们介绍了在Python中使用Qt Designer设计好的多个界面文件的常用方法。通过单独加载并显示、使用TabWidget进行管理或者使用QStackedWidget进行管理,开发人员可以根据实际情况选择合适的方法来管理多个界面文件。希望本文可以帮助读者更好地理解如何在Python代码中使用Qt Designer设计好的多个界面文件。

相关文章:

Python + Qt Designer构建多界面GUI应用程序:Python如何调用多个界面文件

引言 Qt Designer是一个用户友好的图形用户界面设计工具,它可以帮助开发人员通过拖放的方式快速创建界面。在实际开发中,往往需要设计多个界面文件,并在Python代码中进行统一管理和使用。本文将介绍如何在Python中使用Qt Designer设计好的多…...

AGI大模型(7):提示词应用

1 生成数据 LLM具有⽣成连贯⽂本的强⼤能⼒。使⽤有效的提示策略可以引导模型产⽣更好、更⼀致和更真实的响应。LLMs还可以特别有⽤地⽣成数据,这对于运⾏各种实验和评估⾮常有⽤。例如,我们可以使⽤它来为情感分类器⽣成快速样本,如下所示: 提示: ⽣成10个情感分析的范…...

【倒霉bug2025】找不到vc_runtimeMinimum_x64.msi

今天是倒霉的一天,当喉咙痛到无法出门玩耍的我打开steam准备开始玩《冰封世界》时,游戏启动直接报错 在选择安装之后弹出一个经典窗口 然后在C:\ProgramData\PackageCache中找msi到位置点击确定继续报错说msi版本不对 上网一搜,找不到vc_ru…...

什么是强哈希算法pbkdf2(Password-Based Key Derivation Function)

文章目录 什么是pbkdf2使用场景 在线工具 什么是pbkdf2 维基百科:https://zh.wikipedia.org/zh-cn/PBKDF2 PBKDF2(Password-Based Key Derivation Function 2)是一种基于密码的密钥派生函数。它的主要作用是从密码和盐(salt&…...

Python 基础语法详解

一、变量和数据类型 变量 在 Python 中,变量无需声明类型,直接赋值即可。变量名区分大小写。 # 整数类型 age 25 print(age) # 输出:25# 浮点数类型 height 1.75 print(height) # 输出:1.75# 字符串类型 name "张三&…...

AI Agent 时代开幕-Manus AI与OpenAI Agent SDK掀起新风暴

【本周AI新闻: AI Agent 时代开幕-Manus AI与OpenAI Agent SDK掀起新风暴】 https://www.bilibili.com/video/BV1bkQyYCEvQ/?share_sourcecopy_web&vd_source32ed33e1165d68429b2e2eb4749f3f26 最近AI圈子里最火的话题非Manus莫属!这款由中国武汉创业公司“蝴…...

为什么会出现redis数据库?redis是什么?

什么是 Redis? 为什么要用 Redis? 下面我将从 Redis 出现的背景、Redis 的解决方案个来回答。 1、Redis 出现的背景 互联网的应用越来越多,例如社交网络、电商、实时服务发展的十分迅速,这就导致了传统技术栈(如关系型数据库)…...

每日一题---dd爱框框(Java中输入数据过多)

dd爱框框 实例: 输入: 10 20 1 1 6 10 9 3 3 5 3 7 输出: 3 5 这道题要解决Java中输入的数过多时,时间不足的的问题。 应用这个输入模板即可解决: Java中输入大量数据 import java.util.*; import java.io.*;pu…...

Flink-学习路线

最近想学习一下Flink,公司的实时需求还是不少的,因此结合ai整理了一份学习路线,记录一下。 当然,公司也有Scala版本Flink框架,也学习了一下。这里只说Java版本 1. Java基础 目标: 掌握Java编程语言的基础知识。 内容…...

一次Milvus迁移的记录

前言 希望把Linux上生产环境中使用docker compose运行的milvus迁移到本地(mac os)的docker compose中 操作过程 找到了官方有两个相关的项目: https://github.com/zilliztech/milvus-backup https://github.com/zilliztech/vts 但是…我都没用,因为使…...

矩阵的转置

对于的矩阵,使用两个指针变量,可以方便实现(i,j)处元素与(j,i)处元素交换位置。令指针Arow&A[i][0],则Arow[j]可实现对第i行j列元素的访问。令指针Bptr&A[0][i],则*Bptr就可以访问(0,i)处元素,然后&#xff0c…...

使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号

使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号 你的步骤非常详细且清晰,能够帮助用户在 Excel 中通过 VLOOKUP 和条件格式来查找并标红匹配的串号。以下是对你提供的步骤的简要总结和补充说明: 1. 添加“是否匹配”列 在 a.xlsx 中新增一列…...

Python Matplotlib面试题精选及参考答案

目录 绘制函数 y=2x+5 在区间 [1,10] 的折线图,设置标题和坐标轴标签 在同一图中绘制 sin (x) 和 cos (x) 曲线,添加图例和网格线(x∈[0,2π]) 绘制分段函数:当 x<0 时 y=0,x≥0 时 y=x,设置不同线段颜色 绘制带数据点的折线图,使用红色虚线样式和圆形标记(数据…...

在线 SQL 转 SQLAlchemy:一键生成 Python 数据模型

一款高效的在线 SQL 转 SQLAlchemy 工具&#xff0c;支持自动解析 SQL 语句并生成 Python SQLAlchemy 模型代码&#xff0c;适用于数据库管理、后端开发和 ORM 结构映射。无需手写 SQLAlchemy 模型&#xff0c;一键转换 SQL 结构&#xff0c;提升开发效率&#xff0c;简化数据库…...

基于自定义线程池手写一个异步任务管理器

我们在后端执行某些耗时逻辑操作时往往会导致长时间的线程阻塞&#xff0c;在这种情况之下&#xff0c;我们往往会引一条异步线程去处理这些异步任务&#xff0c;如果每次都创建新的线程来处理这些任务&#xff0c;不仅会增加代码冗余&#xff0c;还可能造成线程管理混乱&#…...

基恩士PLC编程小技巧八:脚本过长如何实现换行及替换

基恩士PLC编程小技巧八&#xff1a;脚本过长如何实现换行&#xff1f; 一、问题点 我们在使用基恩士编程软件KV STUDIO 进行脚本编程时&#xff0c;经常遇到这样的问题&#xff1a;脚本的一行过长&#xff0c;程序不好阅读及维护。 IF MR1000 OR MR1001 OR MR1002 OR MR1003 OR…...

每日一题---数组中两个字符串的最小距离

数组中两个字符串的最小距离 给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 链接&#xff1a;数组中两个字符串的最小距离__牛…...

【PTA题目解答】7-1利用STL比较数据大小并排序(15分)c++

1.题目&#xff1a; 2.算法原理 根据题目要求&#xff0c;模拟即可&#xff0c;set容器会帮我们把插入的数自动排序好 题目说输入非整型数据就停止&#xff0c;不用特意判断输入的数据是整型还是非整型&#xff0c;如果用户输入的是字符&#xff08;例如 a&#xff09;&#…...

如何用Deepseek制作流程图?

使用Deepseek制作流程图&#xff0c;本质上是让AI根据你的需求&#xff0c;生成相关流程图的代码&#xff0c;然后在流程图编辑器中渲染&#xff0c;类似于Python一样&#xff0c;ChatGPT可以生成代码&#xff0c;但仍需在IDE中执行。 你知道绘制流程图最高效的工具是什么吗&a…...

【09】单片机编程核心技巧:变量赋值,从定义到存储的底层逻辑

【09】单片机编程核心技巧&#xff1a;变量赋值&#xff0c;从定义到存储的底层逻辑 &#x1f31f; 核心概念 单片机变量的定义与赋值是程序设计的基础&#xff0c;其本质是通过 RAM&#xff08;随机存储器&#xff09; 和 ROM&#xff08;只读存储器&#xff09; 的协作实现…...

vscode python相对路径的问题

vscode python相对路径的问题 最近使用使用vscode连接wsl2写python时&#xff0c;经常遇到找不到包中的方法的问题&#xff0c;最终发现vscode在执行python代码时目录不是从当前python文件开始算起&#xff0c;而是从当前工作区的目录开始算起&#xff0c;比如说我打开的是/ho…...

C语言中的指针与函数

引言 在C语言编程中,指针是一个非常重要且强大的概念。它不仅帮助我们高效地管理内存,还能提升程序的灵活性和性能。而指针与函数的结合使用,是C语言中非常常见且极具挑战性的一个话题。正确理解和使用指针与函数的关系,不仅能帮助程序员提高代码质量,还能优化程序的执行…...

深度学习-服务器训练SparseDrive过程记录

1、cuda安装 1.1 卸载安装失败的cuda 参考&#xff1a;https://blog.csdn.net/weixin_40826634/article/details/127493809 注意&#xff1a;因为/usr/local/cuda-xx.x/bin/下没有卸载脚本&#xff0c;很可能是apt安装的&#xff0c;所以通过执行下面的命令删除&#xff1a; a…...

理解langchain langgraph 官方文档示例代码中的MemorySaver

以下是langchain v0.3官方示例代码 from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import START, MessagesState, StateGraph# 可以理解为&#xff1a;定义一个流程&#xff0c;这个流程中用到的数据类型是Messages。 <---定义一个有向图&…...

JumpServer基础功能介绍演示

堡垒机可以让运维人员通过统一的平台对设备进行维护&#xff0c;集中的进行权限的管理&#xff0c;同时也会对每个操作进行记录&#xff0c;方便后期的溯源和审查&#xff0c;JumpServer是由飞致云推出的开源堡垒机&#xff0c;通过简单的安装配置即可投入使用&#xff0c;本文…...

Spring @Bean注解使用场景二

bean:最近在写一篇让Successfactors顾问都能搞明白的sso的逻辑的文章&#xff0c;所以一致在研究IAS的saml2.0的协议&#xff0c;希望用代码去解释SP、idp的一些概念&#xff0c;让顾问了解SSO与saml的关系&#xff0c;在github找代码的时候发现一些代码的调用关系很难理解&…...

创业者认知、思辨、成长指南

一、为什么要创业&#xff1f; 1、因为没有家产继承和家庭关系&#xff0c;不能躺平&#xff1b; 比如父母留下了大量的财富&#xff0c;靠钱生钱吃利息&#xff0c;收租&#xff0c;做做投资这些形式&#xff0c;就可以活得很好&#xff1b; 再比如父母或者血亲有资源&#…...

ECharts中Map(地图)样式配置、渐变色生成

前言 ECharts是我们常用的图表控件&#xff0c;功能特别强大&#xff0c;每次使用都要查API比较繁琐&#xff0c;这里就记录开发中常用的配置。 官网&#xff1a;https://echarts.apache.org/handbook/zh/get-started 配置项&#xff1a;https://echarts.apache.org/zh/opti…...

PostgreSQL存储管理体系结构学习笔记2

1.表和元组的组织方式 在PostgreSQL中&#xff0c;同一个表中的元组按照创建顺序依次插入到表文件中。元组之间不进行关联&#xff0c;这样的表文件称之为堆文件。PostgreSQL系统中包含了四种堆文件&#xff1a;普通堆&#xff0c;临时堆&#xff0c;序列&#xff0c;TOAST表。…...

【PTA题目解答】7-3 字符串的全排列(20分)next_permutation

1.题目 给定一个全由小写字母构成的字符串&#xff0c;求它的全排列&#xff0c;按照字典序从小到大输出。 输入格式: 一行&#xff0c;一个字符串&#xff0c;长度不大于8。 输出格式: 输出所有全排列&#xff0c;每行一种排列形式&#xff0c;字典序从小到大。 输入样例…...

SOME/IP:用Python实现协议订阅、Offer、订阅ACK与报文接收

文章目录 前言一、代码层次二、详细代码1. eth_scapy_sd.py2、eth_scapy_someip.py3、network_define.py4、packet_define.py5、unpack_define.py6、someip_controller.py 前言 1、需要pip安装scapy库 2、需要修改根据实际情况配置network_define.py 3、执行someip_controller…...

嵌入式八股ARM篇

前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…...

剑指 Offer II 087. 复原 IP

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP/README.md 剑指 Offer II 087. 复原 IP 题目描述 给定一个只包含数字的字符串 s &#xff0c;用以表示一个 IP 地址&#xf…...

RCE-Labs超详细WP-Level10(无字母命令执行_二进制整数替换)

温馨提示 这关涉及的知识点较多, 写的很长, 中间留了很多错误引导(本人在实验时遇到的问题, 或许你们也会遇到), 在后文才逐步解释源码分析 跟前几关一样, 更改了 WAF 的过滤字段这个关卡, 只有0, 1, (单引号), $, <, \ , ( , )可以用解题分析(实验这些命令, 可以先在自己本…...

数据结构(泛型)

1,装箱 int i 10;Integer j Integer.valueOf(i);2.拆箱 Integer i 10;int j i.intValue(); 3.自动装箱 int i 10;Integer j i;int i 10;Integer j (Integer) i; 4,自动拆箱 Integer i 10;int j i;Integer i 10;int j (int) i; 有一段代码需要解析一下&#xff1a; …...

Android Dagger2 框架辅助工具模块深度剖析(六)

一、引言 在 Android 开发领域&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;作为一种至关重要的设计模式&#xff0c;能显著降低代码间的耦合度&#xff0c;提升代码的可测试性与可维护性。Dagger2 作为一款强大的依赖注入框架&#…...

LVGL第三方库的使用(中文库)

一、第三方库文档 3rd party libraries&#xff08;第三方库&#xff09; — LVGL 文档 FreeType 中文字库 SDL 模拟器使用freetype中文字库 1.开启字库 2.安装freetype 字库 sudo apt-get update sudo apt-get install libfreetype6-dev 3.修改makefile 添加字库 4.显示中…...

【愚公系列】《高效使用DeepSeek》009-PPT大纲自动生成

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

使用easyexcel实现单元格样式设置和下拉框设置

1.单元格样式设置 1.1实体类 public class DemoData {ExcelProperty("PK")private String name;ExcelProperty("年龄")private int age;// 必须提供无参构造方法public DemoData() {}public DemoData(String name, int age) {this.name name;this.age …...

ngx_conf_read_token

file_size ngx_file_size(&cf->conf_file->file.info); 此时 file_size2656 当然还是和上次一样 for ( ;; ) {if (b->pos > b->last) { 此时 b->pos 0x57759a8b77f4 b->last 0x57759a8b8230 b->start0x57759a8b77d0 条件不成立 ch *b->po…...

Certbot实现SSL免费证书自动续签(CentOS 7 + nginx/apache)

在 CentOS 上&#xff0c;你可以使用 Let’s Encrypt 提供的 Certbot 工具来申请和自动续约免费的 SSL 证书。 1. 安装 Certbot CentOS 7 安装 EPEL 和 Certbot yum install -y epel-release yum install -y certbot python3-certbot-nginx如果使用的是 Apache&#xff1a; …...

【使用 Java 调用命令行工具:完整指南】

在 Java 中调用命令行工具是一个常见的需求&#xff0c;尤其是在需要与外部程序交互或执行系统命令时。本文将详细介绍如何使用 Java 调用命令行工具&#xff0c;并提供一个完整的示例来演示如何下载视频。 1. 为什么需要调用命令行工具&#xff1f; 命令行工具通常提供了强大…...

pythonSTL---sys

sys 是 Python 标准库中的一个内置模块&#xff0c;它提供了许多与 Python 解释器和系统环境进行交互的功能。 sys方法 1. 导入 sys 模块 在使用 sys 库的功能之前&#xff0c;需要先导入它&#xff1a; import sys2. 命令行参数 (sys.argv) sys.argv 是一个包含命令行参数…...

数据分布偏移检测:保障模型在生产环境中的稳定性

数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...

redis删除与先判断再删除的区别

在Redis中&#xff0c;“先判断存在再删除”与“直接删除”的区别主要体现在‌操作效率、原子性保障、并发安全性‌三个方面&#xff0c;具体对比如下&#xff1a; ‌1. 操作效率‌ ‌直接删除‌&#xff1a;仅需执行DEL命令一次&#xff0c;无论键是否存在均直接操作&#xf…...

3.6、数字签名

目录 数字签名数字签名与验证过程 数字签名 数字签名是签名者使用自己的私钥对待签名数据的哈希值做密码运算得到的一个结果 第一签名者用自己的私钥来对我们待签数据的哈希值进行签名&#xff0c;直接对数据进行签名其实也是可以的&#xff0c;只是对数据签名&#xff0c;这…...

华为手机助手输入连接码时光标乱跳

问题复现&#xff1a;输入12345678&#xff0c;光标自动跳转导致连接码出现乱序情况。 千万别试着找出规律&#xff0c;已试动态规律非大牛误轻试 问题原因&#xff1a; 想啥呢&#xff1f;华哥的软件又不是我开发我要Know Why干啥 我只需关心解决方案 &#xff08;可能时输入…...

本地化部署Deepseek关于Ollama 安全加固方案(新手易学)

本地化部署Deepseek关于Ollama 安全加固方案&#xff08;新手易学&#xff09; 本方案针对使用ChatBox调用Ollama部署DeepSeek-R1:14b模型时的安全防护需求&#xff0c;提供四重防护措施。 &#x1f512; 一、关闭外网访问&#xff08;关键步骤&#xff09; 1. 修改监听地址 …...

C++ STL算法函数 —— 应用及其操作实现

一、STL算法函数分类概述 STL算法库提供了大量实用函数&#xff0c;按功能可分为以下五类&#xff1a; 1. 不修改序列的操作 定义&#xff1a;这些算法不会改变容器中的元素&#xff0c;仅对数据进行查询或统计。 典型函数&#xff1a; 函数功能示例find(first, last, value…...

AI数字人:口播与唇形同步的福音,支持本地部署/批量生成/口齿清晰

Heygem&#xff1a;开源前端界面的老六玩家 好消息&#xff01;Heygem 在 GitHub 上开源了&#xff01;不过&#xff0c;嘻嘻&#xff0c;只是前端界面开源&#xff0c;感觉更像是来 GitHub 刷一波知名度。不过这依然是个值得关注的工具。让我们先来看看它的官方介绍&#xff…...