PyQt5-基本控件| 主窗口的类型、创建以及代码如何实现?

简介: PyQt5-基本控件| 主窗口的类型、创建以及代码如何实现?

1 主窗口的类型

  • PyQt中的窗口部件:QMainWindow,QWidget,QDialog
窗口分类 说明
QMainWindow 包含菜单栏,工具栏,状态栏,标题栏,是最常见的窗口形式
QDialog 对话窗口的基类,一般用于执行一些短期任务,无上述几个栏
QWidget 不确定窗口的用途就使用Widget ,可作为顶层窗口(QMainWindow),可以嵌入到其他窗口

2 QMainWindow

2.1 常用方法

  • QMainWindow就是一个顶层窗口,它可以包含很多界面元素,如菜单栏、工具栏、状态栏、子窗口等等;
  • 源码可参考源码:
    在这里插入图片描述
PyQt5\QtWidgets\QMainWindow.py

2.1.1 addToolBar

  • 添加工具栏;
    def addToolBar(self, *__args): # real signature unknown; restored from __doc__ with multiple overloads
        """
        addToolBar(self, Qt.ToolBarArea, QToolBar)
        addToolBar(self, QToolBar)
        addToolBar(self, str) -> QToolBar
        """
        return QToolBar

2.1.2 centralWidget

  • 返回窗口中心的控件,未设置时返回NULL
    def centralWidget(self): # real signature unknown; restored from __doc__
        """ centralWidget(self) -> QWidget """
        return QWidget

2.1.3 menuBar

  • 返回主窗口的菜单栏;
     def menuBar(self): # real signature unknown; restored from __doc__
         """ menuBar(self) -> QMenuBar """
         return QMenuBar
    

    2.1.4 setCentralWidget

  • 设置窗口中心的控件;
    def setCentralWidget(self, QWidget): # real signature unknown; restored from __doc__
        """ setCentralWidget(self, QWidget) """
        pass

2.1.5 setStatusBar

  • 设置状态栏;
    def setStatusBar(self, QStatusBar): # real signature unknown; restored from __doc__
        """ setStatusBar(self, QStatusBar) """
        pass

2.1.6 statusBar

  • 获得状态栏对象后,调用状态栏对象的showMessage()方法显示状态栏信息;
    def statusBar(self): # real signature unknown; restored from __doc__
        """ statusBar(self) -> QStatusBar """
        return QStatusBar

2.2 窗口示例

2.2.1 空白窗口

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19 
# 文件名称:test017_FirstMainWin.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = QMainWindow()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

2.2.2 通用标准写法

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19 
# 文件名称:test018_FirstMainWin.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow


class FirstMainWin(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("标准窗口")
        self.resize(500, 400)
        self.info = self.statusBar()
        self.info.showMessage("这是一个标准窗口的写法", 6000)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = FirstMainWin()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

3 QWidget

  • QWidget类是所有用户界面对象的基类;
  • 所有的窗口和控件都直接或间接继承自QWidget类。
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19 
# 文件名称:test018_FirstQwidget.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip


class FirstQwidget():
    def __init__(self):
        super().__init__()
        self.win = QWidget()

    def s(self):
        self.btn = QPushButton(self.win)
        self.btn.setText("按钮")
        self.btn.move(30, 30)

        self.win.resize(300, 300)
        self.win.move(230, 300)
        self.win.setWindowTitle("这是一个QWidget")

        self.win.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = FirstQwidget()
    w.s()
    sys.exit(app.exec_())

在这里插入图片描述

4 QDialog

  • QDialog的各种子类提供了各种标准对话框,比如QMessageBox, QFileDialog, QInputDialog, QFontDialog等。
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19 
# 文件名称:test020_FirstQwidget.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog
from PyQt5.QtCore import Qt


class DialogWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('这是Dialog')
        self.resize(400, 400)

        self.btn = QPushButton(self)
        self.btn.setText('这是一个对话框')
        self.btn.move(50, 50)
        self.btn.resize(200, 30)
        self.btn.clicked.connect(self.showDialog)

        self.show()

    def showDialog(self):
        dialog = QDialog()
        btn = QPushButton('ok', dialog)
        dialog.setWindowTitle('Dialog弹窗')
        btn.move(70, 60)
        btn.clicked.connect(QMainWindow.close)
        dialog.setWindowModality(Qt.ApplicationModal)
        dialog.exec_()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = DialogWindow()
    sys.exit(app.exec_())

在这里插入图片描述

目录
相关文章
|
数据库 UED Python
1、基于python多进程+pyqt5开发流畅界面程序
使用python+pyqt5开发界面程序,利用多进程分离界面和任务执行功能,达到界面流畅不卡顿的要求。 本文程序示例:https://github.com/AlvinsFish/UiExample
2741 0
1、基于python多进程+pyqt5开发流畅界面程序
|
Python
『PyQt5-基础篇』| 02 Pyqt5开发环境+安装配置QtDesigner
『PyQt5-基础篇』| 02 Pyqt5开发环境+安装配置QtDesigner
538 0
|
搜索推荐 定位技术
百度地图开发mapStyle个性化地图styleJson的配色解决方案
百度地图开发mapStyle个性化地图styleJson的配色解决方案
862 0
|
图形学 Python 容器
『PyQt5-基础篇』| 04 Qt Designer的初步快速了解
『PyQt5-基础篇』| 04 Qt Designer的初步快速了解
446 1
|
8月前
|
JavaScript 算法 前端开发
解决若依框架中 npm run dev 卡在 95% 的问题
本文深入探讨若依框架中 `npm run dev` 卡在 95% 的问题,分析其与 Node.js 17+ 内置 OpenSSL 3.0 加密策略变更的关系。提供临时(设置环境变量 `NODE_OPTIONS=--openssl-legacy-provider`)和永久(修改 `package.json` 脚本)解决方案,同时建议降级 Node.js 或更新依赖以根本解决兼容性问题。最后强调依赖管理与开发环境标准化的重要性,助力团队高效开发。
877 1
|
数据安全/隐私保护
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
348 0
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
PyQt5-Qt Designer中控件的尺寸相关设置(sizePolicy策略)
PyQt5-Qt Designer中控件的尺寸相关设置(sizePolicy策略)
837 1
|
机器学习/深度学习 数据采集 算法
利用未标记数据的半监督学习在模型训练中的效果评估
本文将介绍三种适用于不同类型数据和任务的半监督学习方法。我们还将在一个实际数据集上评估这些方法的性能,并与仅使用标记数据的基准进行比较。
1104 8
『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用
『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用
424 0
|
传感器 编解码 人机交互
基于51单片机的温室大棚环境检测系统
基于51单片机的温室大棚环境检测系统
347 0

热门文章

最新文章