pyside2 系列之QMainWindow和QWidget

QWidget

  • QWidget 类是所有用户界面对象的基类。它继承自QObject 和 QPaintDevice。
  • 没有父类的 QWidget 叫做 Independent Window(独立窗口),可设置窗口标题,图标等;有父类的叫 Child Widgets(子部件),显示在父类中。
  • QWidget可内嵌很多子部件,这些子部件需要通过Layout(布局)来加入到该QWidget中。布局管理将在之后讲解。

QMainWindow

  • QMainWindow从QWidget类继承。
  • QMainWindow是主窗体,有菜单栏、工具栏、状态栏,浮动窗体区,中心窗体区等。如果这个类需要作为主窗体,那么使用QMainWindow。
  • QMainWindow必须设置中心窗体,通过 setCentralWidget 函数设置。中心窗体是QWidget 类的实例。
  • QMainWindow 可使用 saveState() 存储布局的状态;稍后可使用 restoreState() 恢复。

下面是QMainWindow的一个例子

 

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: wind
@contact: 367059791@qq.com
@time: 2021/12/30 13:46
@file: demo_mainwindow.py
@desc: 
"""
import sys
from PySide2.QtWidgets import (
    QApplication, 
    QMainWindow, 
    QWidget, 
    QVBoxLayout, 
    QLabel, 
    QAction, 
    QToolBar, 
    QDockWidget
)
from PySide2.QtCore import Qt


class MainWnd(QMainWindow):
    def __init__(self):
        super(MainWnd, self).__init__()
        self.setWindowTitle("QMainWindow demo")
        self.resize(600, 400)

        # 中心窗体
        self.center = QWidget(self)
        self.center.setStyleSheet("""border: 1px solid red;""")    # 红边框方便看到中心窗体
        # 中心窗体设置布局
        self.layout_central = QVBoxLayout()
        self.center.setLayout(self.layout_central)
        self.label_central = QLabel("中间区域", self)
        self.label_central.setAlignment(Qt.AlignCenter)
        self.layout_central.addWidget(self.label_central)

        # 主窗体必须设置中心窗体
        self.setCentralWidget(self.center)

        # 菜单栏
        menu1 = self.menuBar().addMenu("文件")   # 添加1个菜单
        action_open = QAction("打开", self)      # 菜单里添加1个操作
        menu1.addAction(action_open)

        # 工具栏
        toolbar = QToolBar("tools")
        action_shutdown = QAction("关机", self)
        toolbar.addAction(action_shutdown)
        self.addToolBar(Qt.TopToolBarArea, toolbar)   # 顶部添加工具栏

        # 状态栏
        self.statusBar().showMessage("加载...", timeout=2000)    # 显示2秒

        # 浮动窗体区
        self.demo_dock = QDockWidget("demo_dock", self)
        self.addDockWidget(Qt.BottomDockWidgetArea, self.demo_dock)  # 底部浮动区域添加 demo_dock


if __name__ == "__main__":
    app = QApplication(sys.argv)
    wnd = MainWnd()
    wnd.show()
    sys.exit(app.exec_())
  • 添加菜单“文件”
  • 顶部添加了工具栏,并增加“关机”
  • 状态栏显示2秒,
  • 底部添加了浮动窗体demo_dock 

QMainWindow区域分布如下图

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值