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

1 主窗口的类型

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

2 QMainWindow

2.1 常用方法

  • QMainWindow就是一个顶层窗口,它可以包含很多界面元素,如菜单栏、工具栏、状态栏、子窗口等等;
  • 源码可参考源码:
python 复制代码
PyQt5\QtWidgets\QMainWindow.py

2.1.1 addToolBar

  • 添加工具栏;
python 复制代码
    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
python 复制代码
    def centralWidget(self): # real signature unknown; restored from __doc__
        """ centralWidget(self) -> QWidget """
        return QWidget
  • 返回主窗口的菜单栏;
python 复制代码
    def menuBar(self): # real signature unknown; restored from __doc__
        """ menuBar(self) -> QMenuBar """
        return QMenuBar

2.1.4 setCentralWidget

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

2.1.5 setStatusBar

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

2.1.6 statusBar

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

2.2 窗口示例

2.2.1 空白窗口

python 复制代码
# -*- 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 通用标准写法

python 复制代码
# -*- 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类。
python 复制代码
# -*- 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等。
python 复制代码
# -*- 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_())
相关推荐
叫我:松哥1 小时前
基于大数据和深度学习的智能空气质量监测与预测平台,采用Spark数据预处理,利用TensorFlow构建LSTM深度学习模型
大数据·python·深度学习·机器学习·spark·flask·lstm
吃茄子的猫8 小时前
quecpython中&的具体含义和使用场景
开发语言·python
じ☆冷颜〃8 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方8 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
APIshop8 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨8 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
效率客栈老秦9 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
哈里谢顿9 小时前
一条 Python 语句在 C 扩展里到底怎么跑
python
znhy_239 小时前
day46打卡
python
Edward.W10 小时前
Python uv:新一代Python包管理工具,彻底改变开发体验
开发语言·python·uv