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

快速掌握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, QVBoxLayout

app = 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, QVBoxLayout

app = 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, QLabel

app = 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, QVBoxLayout

app = 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, QVBoxLayout

def 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, QLabel

app = 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, QPushButton

app = 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, QTextEdit

app = 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, QTextEdit

app = 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 QtAxContainer

app = 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.kler.cn/a/146295.html

相关文章:

  • GPT-5 传言:一场正在幕后发生的 AI 变革
  • 2025 年 Java 最新学习资料与学习路线——从零基础到高手的成长之路
  • idea 如何安装 github copilot
  • 单元测试与unittest框架
  • 【经济学通识——国债】
  • Linux命令行工具-使用方法
  • 平衡二叉树(AVL)
  • list的总结
  • 【nlp】4.4 Transformer库的使用(管道模式pipline、自动模式auto,具体模型BertModel)
  • Redis面试题:Redis的数据过期策略有哪些?
  • Centos7上面部署redis
  • 计算机组成原理-Cache替换算法
  • 【Cisco Packet Tracer】电子邮箱仿真搭建
  • python -opencv 图像锐化
  • java多线程一
  • 从Redis反序列化UserDetails对象异常后发现FastJson序列化的一些问题
  • 论文阅读——Prophet(cvpr2023)
  • 新疆大学与优艾智合机器人成立联合创新实验室
  • 形态学操作—闭运算
  • 【算法萌新闯力扣】:合并两个有序链表
  • 3.golang数组以及切片
  • VMware系列:VMware16安装Win11虚拟机(最全步骤+踩坑)
  • 蓝桥杯第四场双周赛(1~6)
  • 搭建SRS视频服务器
  • 机器学习第13天:模型性能评估指标
  • qt pdf 模块简介