PyQt5 QMainWindow

在这里插入图片描述

简介

QMainWindow继承自QWidgets
在这里插入图片描述
窗口大致由菜单栏,工具栏,状态栏,中心Widget 和 Dock Widgets(停靠部件)组成。
常用API:
在这里插入图片描述

1 菜单栏(QMenu)

#!/usr/bin/env python3 
# -*- coding:utf-8 -*-

from PyQt5.QtWidgets import  *
from  PyQt5.QtCore import Qt

class  QMainWindowDemo(QMainWindow):
    def __init__(self):
        super(QMainWindowDemo, self).__init__()
        self.resize(600,400)
        self.setWindowTitle("QMainWindow学习")
        # 1 获得菜单栏 用于返回主窗口的QMenuBar对象;
        self.menubar = self.menuBar()
        self.menubar.setStyleSheet("background-color: red;color:black; ")
        # 菜单栏中添加菜单 (QMenu)
        self.filemenu = self.menubar.addMenu("文件")
        self.helpmenu = self.menuBar().addMenu("帮助")
        # 菜单中添加Action
        self.filemenu.addAction("打开文件")
        self.filemenu.addAction("关闭文件")
        self.helpmenu.addAction("工具介绍")
        self.helpmenu.addAction("版本信息")
        #信号槽
        self.filemenu.triggered[QAction].connect(self.processtrigger)
        self.helpmenu.triggered[QAction].connect(self.processtrigger)

    def processtrigger(self,qaction):
        print(qaction.text()+" is triggered!")

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    test = QMainWindowDemo()
    test.show()
    sys.exit(app.exec_())

效果如下:
在这里插入图片描述

2 工具栏

#!/usr/bin/env python3 
# -*- coding:utf-8 -*-

from PyQt5.QtWidgets import  *
from  PyQt5.QtCore import Qt

class  QMainWindowDemo(QMainWindow):
    def __init__(self):
        super(QMainWindowDemo, self).__init__()
        self.resize(400,300)
        self.setWindowTitle("QMainWindow学习")
        # 工具栏(一般带图片的那种)
        tool = self.addToolBar("File")
        tool.setStyleSheet("background-color: red;color:black; ")
        tool.addAction("刷新")
        tool.addAction("保存")
        #信号槽
        tool.actionTriggered[QAction].connect(self.toolBtnPressed)

    def toolBtnPressed(self,qaction):
        print("pressed too btn is",qaction.text())
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    test = QMainWindowDemo()
    test.show()
    sys.exit(app.exec_())

效果:
在这里插入图片描述

3 状态栏

from PyQt5.QtWidgets import  *
from  PyQt5.QtCore import Qt

class  QMainWindowDemo(QMainWindow):
    def __init__(self):
        super(QMainWindowDemo, self).__init__()
        self.resize(400,300)
        self.setWindowTitle("QMainWindow学习")
        # 状态栏
        self.status_bar = QStatusBar()
        self.status_bar.setStyleSheet("background-color: green;color:black; ")
        self.setStatusBar(self.status_bar )
        #self.status_bar.set
        self.status_bar.addWidget(QLabel("状态栏: 2020-06-09"))
        self.status_bar.addWidget(QLabel(" ##############"))

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    test = QMainWindowDemo()
    test.show()
    sys.exit(app.exec_())

效果如下:
在这里插入图片描述

4 Dock Widgets(停靠部件QDockWidget)

#!/usr/bin/env python3 
# -*- coding:utf-8 -*-

from PyQt5.QtWidgets import  *
from  PyQt5.QtCore import Qt

class  QMainWindowDemo(QMainWindow):
    def __init__(self):
        super(QMainWindowDemo, self).__init__()
        self.resize(400,300)
        self.setWindowTitle("QMainWindow学习")
        center = QFrame()
        center.setFrameStyle(QFrame.Box|QFrame.Panel)
        self.setCentralWidget(center)

        # Dock Widget
        self.dockwidget = QDockWidget(self)
        dockw = QFrame()
        dockw_layout = QVBoxLayout(dockw)
        dockw_layout.addWidget(QLabel("label01"))
        dockw_layout.addWidget(QLabel("label02"))
        dockw_layout.addStretch()
        self.dockwidget.setWidget(dockw)
        self.addDockWidget(Qt.RightDockWidgetArea, self.dockwidget)
        self.dockwidget.setStyleSheet("background-color: green;color:black;")


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    test = QMainWindowDemo()
    test.show()
    sys.exit(app.exec_())

效果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值