首页 > 其他分享 >3.PyQt5【窗口组件】主窗口-QMainWindow

3.PyQt5【窗口组件】主窗口-QMainWindow

时间:2023-01-16 10:47:39浏览次数:41  
标签:QMainWindow 窗口 self PyQt5 添加 new save

一、前言

QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow 常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工 具条按钮时,槽会被调用。

二、学习目标

1.QMainWindow界面实现

2.QMainWindow常用方法

3.添加菜单栏

4.添加工具栏

5.添加状态栏

三、知识点

1.【QMainWindow界面实现】

QMainWindow类提供一个有菜单条、工具栏、状态条的主应用程序窗口。

QAction就是一个实现某些功能的“动作”,可以为其编写槽函数,使用一个QAction对象可以创建菜单项、工具栏按钮,点击菜单项或工具栏按钮就执行了关联的Action的槽函数。

  • 普通写法

    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    #1.创建app实例
    app = QApplication(sys.argv)
    #2.创建窗体实例
    myMain = QMainWindow(flags=Qt.MSWindowsFixedSizeDialogHint)
    #3.显示窗体
    myMain.show()
    #4.运行app
    sys.exit(app.exec_())
    
  • 单继承写法

    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    
    class QmyMainWindow(QMainWindow):
    
        def __init__(self, parent=None):
            super().__init__(parent, flags=Qt.MSWindowsFixedSizeDialogHint)  # 调用父类的构造函数,创建QWidget窗体
    
    
    if __name__ == '__main__':
        # 1.创建app实例
        app = QApplication(sys.argv)
        # 2.创建窗体实例
        myMain = QmyMainWindow()
        # 3.显示窗体
        myMain.show()
        # 4.运行app
        sys.exit(app.exec_())
    

2.【QMainWindow常用方法】

由于QMainWindow类继承自QWidget类,所以QWidget有的属性和方法,也适用于QMainWindow。

        # 设置窗口位置及大小
        self.move(150, 150)
        self.resize(400, 500)
        self.setWindowTitle('窗口坐标系统演示')
        # 设置气泡提示
        self.setToolTip('这是一个气泡显示')
        # 设置图标
        self.setWindowIcon(QIcon('logo.png'))

3.【添加菜单栏】

  • 添加步骤

    1)创建窗口菜单栏

    2)给菜单栏添加菜单项目

    3)给菜单项目添加动作

    4)为动作绑定信号

  • 代码示例

    先实现两个槽函数,文件新建及文件保存:

        def new_action(self):
            print("这是新建选项!")
    
        def save_action(self):
            print("这是保存选项!")
    

    添加菜单栏:

            # 1.创建窗口菜单栏
            self.bar = self.menuBar()
            # 2.给菜单栏添加菜单项目
            self.file = self.bar.addMenu("文件")
            # 3.给菜单项目添加动作
            self.new = self.file.addAction("新建")
            self.save = self.file.addAction("保存")
            self.save.setShortcut("CTRL+S")      # 设置快捷键
            # 4.为动作绑定信号
            self.new.triggered.connect(self.new_action)  # 信号关联槽函数
            self.save.triggered.connect(self.save_action)  # 信号关联槽函数
    

4.【添加工具栏】

  • 添加步骤

    1)创建窗口工具栏

    2)为工具栏添加动作

    3)为动作绑定信号

  • 代码示例

    先实现两个槽函数,文件新建及文件保存:

        def new_action(self):
            print("这是新建选项!")
    
        def save_action(self):
            print("这是保存选项!")
    

    添加菜单栏:

            # 1.创建窗口工具栏
            self.toolBar = self.addToolBar("File")
            # 2.创建新的动作,添加到工具栏
            self.new = QAction(QIcon('logo.png'), "new", self)
            self.save = QAction(QIcon("logo.png"), "save", self)
            self.toolBar.addAction(self.new)
            self.toolBar.addAction(self.save)
            # 3.为动作绑定信号
            self.new.triggered.connect(self.new_action)  # 信号关联槽函数
            self.save.triggered.connect(self.save_action)  # 信号关联槽函数
    

5.【添加状态栏】

  • 添加步骤

    1)先创建一个状态栏

    2)然后将状态栏设置到窗口

    3)将需要显示的信息显示在窗口

  • 代码示例

            # 1.先创建一个状态栏
            self.statuBar = QStatusBar()
            # 2.然后将状态栏设置到窗口
            self.setStatusBar(self.statuBar)
            # 3.将需要显示的信息显示在窗口
            self.statuBar.showMessage('这是状态栏信息', 5000)
    

标签:QMainWindow,窗口,self,PyQt5,添加,new,save
From: https://www.cnblogs.com/ckxingchen/p/17054841.html

相关文章

  • 4.PyQt5【布局组件】水平布局-QHBoxLayout
    一、前言QLayout是Qt中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器。布局管理器不是界面组件,而是界面组件的定位策略;任意容器类型的组件都......
  • 5.PyQt5【布局组件】垂直布局-QVBoxLayout
    一、前言本节我们介绍布局组件中的垂直布局QVBoxLayout。二、学习目标1.QVBoxLayout垂直布局应用三、知识点1.【QVBoxLayout垂直布局应用】垂直布局将多个控件在垂直......
  • 6.PyQt5【布局组件】网格布局-QGridLayout
    一、前言本节我们介绍布局组件中的网格布局QGridLayout。二、学习目标1.QGridLayout网格布局的应用三、知识点1.【QGridLayout网格布局的应用】网格布局也称栅格布局......
  • 7.PyQt5【布局组件】表单布局-QFormLayout
    一、前言本节我们介绍布局组件中的表单布局QFormLayout。二、学习目标1.QFormLayout表单布局的应用三、知识点1.【QFormLayout表单布局的应用】表单布局以两列的形式......
  • 9.PyQt5【布局组件】区域分隔器-QSplitter
    一、前言本节我们介绍布局组件中的区域分隔器QSplitter。二、学习目标1.QSplitter区域分隔器的应用三、知识点1.【QSplitter区域分隔器的应用】QSplitter是一个带切......
  • 8.PyQt5【布局组件】容器布局-QGroupBox
    一、前言本节我们介绍布局组件中的容器布局QGroupBox。二、学习目标1.QGroupBox容器布局的应用三、知识点1.【QGroupBox容器布局的应用】容器布局将容器控件(Containe......
  • 10.PyQt5【基本组件】标签-QLabel
    一、前言QLabel对象充当占位符以显示不可编辑的文本或图像,或动画GIF电影。它也可以用作其他小部件的助记键。标签上可以显示纯文本、超链接或富文本。二、学习目标1.Q......
  • 11.PyQt5【基本组件】单行输入框-QLineEdit
    一、前言QLineEdit是最常用的输入字段。它提供了一个框,可以在其中输入一行文本。二、学习目标1.QLineEdit常用方法2.QLineEdit常用信号3.QLineEdit组件的应用三、知......
  • 12.PyQt5【基本组件】多行输入框-QTextEdit
    一、前言QTextEdit文本输入框可以输入多行文本。二、学习目标1.QTextEdit常用方法2.QTextEdit常用信号3.QTextEdit组件的应用三、知识点1.【QTextEdit常用方法】......
  • 2.PyQt5【窗口组件】对话框-Dialog
    一、前言QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支......