快速掌握Pyqt5的10种容器(Containers)

快速掌握Pyqt5的三种主窗口
快速掌握Pyqt5的2种弹簧
快速掌握Pyqt5的5种布局
快速弄懂Pyqt5的5种项目视图(Item View)
快速弄懂Pyqt5的4种项目部件(Item Widget)
快速掌握Pyqt5的6种按钮
快速掌握Pyqt5的20种输入控件(Input Widgets)
待续。。。

下面将提供一些简单的例子,展示PyQt5中不同种类容器的基本用法。

1. Group Box (QGroupBox)

使用QGroupBox来分组相关的控件,如单选按钮。

from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QRadioButton, QVBoxLayoutapp = QApplication([])
window = QWidget()groupBox = QGroupBox("Options")
radio1 = QRadioButton("Option 1")
radio2 = QRadioButton("Option 2")vbox = QVBoxLayout()
vbox.addWidget(radio1)
vbox.addWidget(radio2)
groupBox.setLayout(vbox)windowLayout = QVBoxLayout(window)
windowLayout.addWidget(groupBox)
window.show()
app.exec_()

2. Scroll Area (QScrollArea)

创建一个QScrollArea,在其中放置一个大控件。

from PyQt5.QtWidgets import QApplication, QWidget, QScrollArea, QLabel, QVBoxLayoutapp = QApplication([])
window = QWidget()scrollArea = QScrollArea()
content = QLabel("A lot of content..." * 100)
scrollArea.setWidget(content)windowLayout = QVBoxLayout(window)
windowLayout.addWidget(scrollArea)
window.show()
app.exec_()

3. Tool Box (QToolBox)

使用QToolBox来创建带有折叠面板的容器。

from PyQt5.QtWidgets import QApplication, QWidget, QToolBox, QLabelapp = QApplication([])
window = QWidget()toolBox = QToolBox()
toolBox.addItem(QLabel("Content of Panel 1"), "Panel 1")
toolBox.addItem(QLabel("Content of Panel 2"), "Panel 2")windowLayout = QVBoxLayout(window)
windowLayout.addWidget(toolBox)
window.show()
app.exec_()

4. Tab Widget (QTabWidget)

创建一个QTabWidget,其中包含多个标签页。

from PyQt5.QtWidgets import QApplication, QWidget, QTabWidget, QLabel, QVBoxLayoutapp = QApplication([])
window = QWidget()tabWidget = QTabWidget()
tabWidget.addTab(QLabel("Content of Tab 1"), "Tab 1")
tabWidget.addTab(QLabel("Content of Tab 2"), "Tab 2")windowLayout = QVBoxLayout(window)
windowLayout.addWidget(tabWidget)
window.show()
app.exec_()

5. Stacked Widget (QStackedWidget)

使用QStackedWidget来创建一个堆叠的控件容器。

from PyQt5.QtWidgets import QApplication, QWidget, QStackedWidget, QPushButton, QVBoxLayoutdef show_next_widget():index = (stackedWidget.currentIndex() + 1) % stackedWidget.count()stackedWidget.setCurrentIndex(index)app = QApplication([])
window = QWidget()stackedWidget = QStackedWidget()
stackedWidget.addWidget(QLabel("Content of Widget 1"))
stackedWidget.addWidget(QLabel("Content of Widget 2"))button = QPushButton("Next")
button.clicked.connect(show_next_widget)windowLayout = QVBoxLayout(window)
windowLayout.addWidget(stackedWidget)
windowLayout.addWidget(button)
window.show()
app.exec_()

这些例子展示了如何使用PyQt5中的不同容器控件。每个容器都有其特定的用途,合理使用这些容器可以使你的GUI应用程序结构更清晰,功能更丰富。

当然,让我们继续探索PyQt5中其他的容器控件:

6. Frame (QFrame)

QFrame 可用于创建一个简单的容器,常常用于绘制边框和分隔内容。

from PyQt5.QtWidgets import QApplication, QFrame, QVBoxLayout, QLabelapp = QApplication([])
frame = QFrame()
frame.setFrameShape(QFrame.StyledPanel)label = QLabel("Content inside a Frame")
layout = QVBoxLayout()
layout.addWidget(label)
frame.setLayout(layout)frame.show()
app.exec_()

7. Widget (QWidget)

QWidget 是PyQt5中所有用户界面对象的基类,也可以作为一个通用的容器。

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButtonapp = QApplication([])
widget = QWidget()button1 = QPushButton("Button 1")
button2 = QPushButton("Button 2")layout = QVBoxLayout()
layout.addWidget(button1)
layout.addWidget(button2)
widget.setLayout(layout)widget.show()
app.exec_()

8. MDI Area (QMdiArea)

QMdiArea 提供了一个多文档接口(MDI),允许管理多个子窗口。

from PyQt5.QtWidgets import QApplication, QMdiArea, QMdiSubWindow, QTextEditapp = QApplication([])
mdiArea = QMdiArea()subWindow1 = QMdiSubWindow()
subWindow1.setWidget(QTextEdit("Subwindow 1"))
mdiArea.addSubWindow(subWindow1)subWindow2 = QMdiSubWindow()
subWindow2.setWidget(QTextEdit("Subwindow 2"))
mdiArea.addSubWindow(subWindow2)mdiArea.show()
app.exec_()

9. Dock Widget (QDockWidget)

QDockWidget 提供了可停靠的控件,这些控件可以被移动和重新停靠在主窗口的不同位置。

from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEditapp = QApplication([])
mainWindow = QMainWindow()dockWidget = QDockWidget("Dockable", mainWindow)
dockWidget.setWidget(QTextEdit("Docked Widget"))mainWindow.addDockWidget(Qt.LeftDockWidgetArea, dockWidget)
mainWindow.show()
app.exec_()

10. QAxWidget

QAxWidget 是 PyQt5 中用于嵌入 ActiveX 控件的容器。ActiveX 是微软的一种软件框架,用于在不同的应用程序之间共享信息和功能。QAxWidget 使得 PyQt 应用能够集成那些仅在 Windows 系统上可用的 ActiveX 控件,例如 Microsoft Office 组件(如 Word 或 Excel)或其他第三方 ActiveX 控件。

基本使用

要使用 QAxWidget,首先需要确保你的环境中安装了 PyQt5PyQt5-toolsQAxWidget 仅在 Windows 系统上可用。

以下是一个使用 QAxWidget 来嵌入 Internet Explorer 浏览器作为控件的简单示例:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtAxContainerapp = QApplication(sys.argv)window = QMainWindow()
window.setWindowTitle('QAxWidget Example')# 创建 QAxWidget
axWidget = QtAxContainer.QAxWidget(window)
axWidget.setControl("Shell.Explorer.2")  # 使用 Internet Explorer 控件# 载入一个网页
axWidget.dynamicCall('Navigate(const QString&)', 'http://www.google.com')window.setCentralWidget(axWidget)
window.resize(800, 600)
window.show()sys.exit(app.exec_())

注意事项

  1. 兼容性QAxWidget 仅在 Windows 上有效,因为 ActiveX 是微软的技术。

  2. 安全性:ActiveX 控件可能存在安全风险,因为它们具有运行时的高权限。

  3. 调试:集成 ActiveX 控件可能需要处理复杂的兼容性和配置问题,调试可能比较困难。

  4. 依赖性:使用 QAxWidget 依赖于控件的可用性,确保目标机器上安装了相应的ActiveX控件。

QAxWidget 在需要与 Windows 平台更紧密集成时非常有用,尤其是在需要使用专有的 Windows 功能或组件时。然而,它的使用应谨慎进行,以确保应用的兼容性和安全性。

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

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

相关文章

属性级情感分析

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 属性级情感分析 简介数据集介绍数据加载和预处理(data_utils.py)预训练模型(skep)模型定义模块(model.py)训练配置(config.py&am…

element 的 Notification 通知,自定义内容

通知事件: // 商户后台通知 MerchantBackgroundNotice() {// 禁止消息通知弹出多条if(this.notifyInstance) {this.notifyInstance.close();}const h this.$createElement; // 创建文本节点this.notifyInstance this.$notify({showClose: false, // 禁止关闭按钮…

Powerbuilder中利用API实现动画特效

Powerbuilder中利用API实现动画特效 摘要:本文通过在Powerbuilder中调用Windows API函数,实现任意图片的放大及任意图片从正面逐渐翻转到背面的功能 关键词:内存设备描述表 显示器设备描述表 API 一、问题的提出 Powerbuilder是一个面向对象的开发大型数据库的图形化的前端开…

vue随意置换页面元素位置

写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何…

数据结构 / 顺序表操作 / 顺序表尾部删除

1.实现逻辑 只需要把顺序表的长度减1。 2.顺序表尾部删除函数代码 /**顺序表尾部删除* */int delete_tail(sqlist *list) {if(NULLlist || 1is_list_empty(list)){return -1;}list->len--;return 0;}3. 完整代码 #include <string.h> #include <stdlib.h> #in…

Redis Cluster主从模式详解

在软件的架构中&#xff0c;主从模式&#xff08;Master-Slave&#xff09;是使用较多的一种架构。主&#xff08;Master&#xff09;和从&#xff08;Slave&#xff09;分别部署在不同的服务器上&#xff0c;当主节点服务器写入数据时&#xff0c;同时也会将数据同步至从节点服…

图解算法数据结构-LeetBook-树03_层序遍历奇数偶数行方向不同

一棵圣诞树记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。请按照如下规则记录彩灯装饰结果&#xff1a; 第一层按照从左到右的顺序记录 除第一层外每一层的记录顺序均与上一层相反。即第一层为从左到右&#xff0c;第二层为从右到左。 示例 1&…

自动化测试-Selenium

一. Selenium介绍 selenium 是用来做web自动化测试的框架,支持各种浏览器,各种,支持各种语言 原理: 二. 元素定位 2.1 XPath 定位 绝对路径: /html/head/title 相对路径以双斜杠开头,常见的相对路径定位有以下几种: <1>相对路径索引: 索引是从1开始的 <2>相…

语音识别学习笔记

目录 开源的语音识别项目 端到端的多说话人语音识别序列化训练方法简介 新一代 Kaldi: Two-pass 实时语音识别 开源的语音识别项目 有哪些语音识别的开源项目&#xff1f; - 知乎 端到端的多说话人语音识别序列化训练方法简介 端到端的多说话人语音识别序列化训练方法简介 …

探索深度学习:从理论到实践的全面指南

探索深度学习&#xff1a;从理论到实践的全面指南 摘要&#xff1a; 本文旨在提供一个关于深度学习的全面指南&#xff0c;带领读者从理论基础到实践应用全方位了解这一技术。我们将介绍深度学习的历史、基本原理、常用算法和应用场景&#xff0c;并通过Python代码示例和Tens…

STM32使用多路PWM注意事项

这是使用CubeMX自动产生的代码&#xff0c;使用TIM2产生了PA0,PA1,PA2,PA3这4路PWM&#xff0c;可以看到里面Pulse是共同使用了一个sConfigOC,如果是需要动态调整Pulse&#xff0c;就需要特别注意。 如果是用来产生呼吸灯&#xff0c;就会把这4个PWM都打乱&#xff0c;我觉得&a…

Go查询Elasticsearch

在 Go 中需要在 Elasticsearch 中执行带有过滤条件的查询时&#xff0c;你可以使用 github.com/olivere/elastic 库的过滤器&#xff08;Filter&#xff09;功能。以下是一个示例代码&#xff0c;展示了如何在 Go 中使用 Elasticsearch 进行带有过滤条件的分页查询&#xff1a;…

【nlp】4.4 Transformer库的使用(管道模式pipline、自动模式auto,具体模型BertModel)

Transformer库的使用 1 了解Transformers库2 Transformers库三层应用结构3 管道方式完成多种NLP任务3.1 文本分类任务3.2 特征提取任务3.3 完型填空任务3.4 阅读理解任务3.5 文本摘要任务3.6 NER任务4 自动模型方式完成多种NLP任务4.1 文本分类任务4.2 特征提取任务4.3 完型填空…

讯飞星火知识库文档问答Web API的使用(二)

上一篇提到过星火spark大模型&#xff0c;现在有更新到3.0&#xff1a; 给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0&#xff08;一&#xff09; 同时又看到有知识库问答的web api&#xff0c;于是就测试了一下。 下一篇是在ChuanhuChatGPT 中单独写一个基于星火知识库的内容…

【Android Jetpack】Navigation的使用

引入 单个Activity嵌套多个Fragment的UI架构模式&#xff0c;非常非常普遍。但是&#xff0c;对Fragment的管理一直是一件比较麻烦的事情。工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。页面的切换通常还包括对应用程序App bar的管理、Fragme…

vue3使用element plus树形选择器懒加载回显失败问题。

vue3使用element plus树形选择器懒加载回显时树形数据还未加载完成&#xff0c;回显时显示的的绑定值&#xff0c;不是要显示的名称。 解决1&#xff1a;不使用懒加载&#xff0c;一次性将数据返回完成 解决2&#xff1a;编辑回显时&#xff0c;拿到要显示的中文强制修改显示…

[个人笔记] Zabbix实现Webhook推送markdown文本

系统工程 - 运维篇 第四章 Zabbix实现Webhook推送markdown文本 系统工程 - 运维篇系列文章回顾Zabbix实现Webhook推送markdown文本前言实施步骤 Zabbix新增报警媒介类型Zabbix给用户新增报警媒介Zabbix修改动作的执行操作和恢复操作验证&测试 参考来源 系列文章回顾 第一章…

Linux系统分区和挂载超过2T的硬盘

报错信息&#xff1a;DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT). 转载&#xff1a;Ubuntu(Linux)系统安装扩展硬盘并完成格式化及挂载 - 知乎

微星主板开启VT

微星主板模拟器使用 开启VT 进入BIOS高级-》OC-》CPU特征-》intel 虚拟化技术-》允许

探索RockPlus SECS/GEM平台 - 赋能半导体行业设备互联

SECS/GEM协议&#xff0c;全称为半导体设备通讯标准/通用设备模型&#xff08;SECS/Generic Equipment Model&#xff09;&#xff0c;是一种广泛应用于半导体制造行业的通信协议。它定义了半导体设备与工厂主控系统&#xff08;如MES&#xff09;之间的通信方式&#xff0c;使…