热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pyqt实现控件移除_Python+PyQt架构:如何调用多个设计师窗口界面文件示例

引言Qt是C语言下广泛使用的一种跨平台的程序界面设计库,而PyQt是其在Python语言下的绑定,这为在Python语言下编写GUI界面程序提供了极大的

引言

Qt是C++语言下广泛使用的一种跨平台的程序界面设计库,而PyQt是其在Python语言下的绑定,这为在Python语言下编写GUI界面程序提供了极大的便利。

对于界面程序的设计,可以使用代码构建,也可以借助于其提供的设计师(Qt Designer)工具来构建,而从方便高效性上来讲,第二种即使用设计师的方法应该是目前应用最多的一种界面设计方法。在使用设计师设计复杂的界面程序时,除设计主界面窗口文件外,一般还需设计其它的辅助子窗口文件,那么在PyQt中,如何在主窗口中调用其它的子窗口文件呢?

下面给出一个在Python语言中使用PyQt界面库及设计师工具编写界面程序,并在程序中实现主窗口调用其它子窗口文件的例子。

本例开发环境配置:Python2.7 + PyQt4。

注意:本文中设计师的使用请参考前面的文章:Python+PyQt架构:使用设计师编写界面程序入门示例

例子说明

该例比较简单,运行界面如下图所示,在主窗口界上中显示了一个Tab Widget控件,该控件中包含了三个页面,每个页面上皆放置了一个Plain Text Edit控件,在该控件上显示了该页面是由哪个界面文件创建的信息。

79d1c377ebafb0343251eec89870f415.png

设计师(Qt Designer)中窗口界面文件的设计

对于该例,在设计师工具中需创建三个窗口ui文件,分别为主窗口文件(Main.ui)及其它两个Tab控件的页面窗口(Tab1.ui、Tab2.ui),设计完成后窗口界面如下图所示:

9fa853b5c06e973505cae15ce7893ebb.png

这三个窗口文件的基类皆为QWidget类,其中,在主窗口Main.ui文件中,放置了一个Tab Widget控件,并仅添加了第一页窗口内容,使用Plain Text Edit控件显示当前页面为主窗口文件创建;另两个窗口文件布局类似,也是使用Plain Text Edit控件来显示当前页面为子窗口文件创建。程序运行时,将两个子窗口文件作为主窗口Tab控件的第2、3两个页面进行显示。

具体的设计过程此处不再赘述了,不明白的可查看前面关于设计师工具使用的文章。

使用设计师工具设计完界面ui文件后,在Python程序中实现界面的显示主要包括两种方法,下面分别进行说明。

程序代码实现-方法1

代码如下图所示:

832d8328e2d099b735257945fd7f1f58.png

在这种方法中,首先需将三个ui界面文件使用pyuic工具转换成py文件,然后在程序中新建一个双继承(QWidget类及主窗口文件的Ui_Form类)关系的主窗口类,然后使用setupUi函数将ui中的界面内容加载到当前的主程序窗口或子窗口中。

其中,主要代码说明如下:

第20行,为主窗口界面内容的加载。

第22-27行,先用代码创建两个子窗口控件w1、w2,然后使用setupUi函数将设计师设计的两个子窗口界面内容加载到w1、w2窗口上,随后将w1、w2添加到主窗口Tab控件的第2、3个页面即可。

程序代码实现-方法2

相对于第1种方法,这种方法更简单一些,代码如下图所示:

845e5a16edd364939c5822c2892a1fb2.png

在这种方法中,在代码中直接调用ui文件,无需先将三个ui界面文件使用pyuic工具转换成py文件。在主程序中新建一个基类为QWidget类的主窗口类,然后使用uic类的loadUi函数将ui中的界面内容直接加载到当前的主窗口或子窗口中。

其中,主要代码说明如下:

第18行,为主窗口界面内容的加载,第2个参数self说明了加载到当前自身窗口上。

第20-23行,直接使用loadUi函数将ui界面文件的窗口加载到主窗口Tab控件的第2、3个页面。

此处,loadUi函数中若给出了第2个参数,则在该参数对应的窗口中加载ui文件中的内容(对于本例如主窗口的加载),若第2个参数省略,则该函数自动创建一个对应ui文件的窗口并将其返回(对于本例如两个子窗口页面的加载)。

总结

本文通过一个小例子,使用两种方法演示了如何使用Python代码,灵活调用多个窗口界面文件来设计复杂的界面程序。可见,在Python语言中,使用PyQt界面库,结合设计师设计界面将会大大加快程序的开发进度,提高程序的开发效率。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!



推荐阅读
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 深入解析 C 语言与 C++ 之间的差异及关联
    深入解析 C 语言与 C++ 之间的差异及关联 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • 在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。 ... [详细]
  • 为了在VS2017和Qt环境中高效配置Open Inventor与Coin3D,本文提供了详细的实操指南和验证步骤。通过这些步骤,用户可以顺利导入机械臂模型进行三维仿真。本文详细介绍了Coin3D作为开源软件的优势及其在三维图形渲染中的应用,并提供了具体的配置方法和常见问题的解决方案。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 深入解析Spring框架中的双亲委派机制突破方法
    在探讨Spring框架中突破双亲委派机制的方法之前,首先需要了解类加载器的基本概念。类加载器负责将类的全限定名转换为对应的二进制字节流。每个类在被特定的类加载器加载后,其唯一性得到保证。然而,这种机制在某些场景下可能会限制灵活性,因此Spring框架提供了一些策略来突破这一限制,以实现更加动态和灵活的类加载。这些策略不仅能够提升系统的可扩展性,还能在复杂的运行环境中确保类的正确加载和管理。 ... [详细]
  • 使用PyQt5与OpenCV实现电脑摄像头的图像捕捉功能
    本文介绍了如何使用Python中的PyQt5和OpenCV库来实现电脑摄像头的图像捕捉功能。通过结合这两个强大的工具,用户可以轻松地打开摄像头并进行实时图像采集和处理。代码示例展示了如何初始化摄像头、捕获图像并将其显示在PyQt5的图形界面中。此外,还提供了详细的步骤说明和代码注释,帮助开发者快速上手并实现相关功能。 ... [详细]
  • 本文作为《Java学习笔记》的开篇,旨在为初学者提供一个全面的概览。文章首先介绍了Java的基本概念及其在编程语言中的地位,强调了Java与其他主流编程语言的共通之处,特别是其核心结构,如控制语句的重要性。通过详细的目录和前言,读者可以快速了解Java的基础知识和学习路径。此外,文章还探讨了控制语句在编程中的关键作用,为后续深入学习打下坚实基础。 ... [详细]
  • 本次发布的Qt音乐播放器2.0版本在用户界面方面进行了细致优化,提升了整体的视觉效果和用户体验。尽管核心功能与1.0版本保持一致,但界面的改进使得操作更加直观便捷,为用户带来了更为流畅的使用体验。此外,我们还对部分细节进行了微调,以确保软件的稳定性和性能得到进一步提升。 ... [详细]
  • 深入解析 ELF 文件格式与静态链接技术
    本文详细探讨了ELF文件格式及其在静态链接过程中的应用。在C/C++代码转化为可执行文件的过程中,需经过预处理、编译、汇编和链接等关键步骤。最终生成的可执行文件不仅包含系统可识别的机器码,还遵循了严格的文件结构规范,以确保其在操作系统中的正确加载和执行。 ... [详细]
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • 在《孙鑫VC++讲座笔记第三讲》中,深入探讨了MFC应用程序的架构,并详细解析了SDI程序的流程图。AfxWinMain()函数位于WINMAIN.CPP文件中,其主要职责包括调用AfxWinInit()进行框架初始化,以及通过pApp->InitApplication()执行应用内部的初始化过程。此外,还详细分析了各个关键函数的作用及其在程序启动过程中的具体功能。 ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
author-avatar
玩玩r28g
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有