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

2023-10-24 15:50:52 浏览数 (2)

1 主窗口的类型

  • PyQt中的窗口部件:QMainWindow,QWidget,QDialog

窗口分类

说明

QMainWindow

包含菜单栏,工具栏,状态栏,标题栏,是最常见的窗口形式

QDialog

对话窗口的基类,一般用于执行一些短期任务,无上述几个栏

QWidget

不确定窗口的用途就使用Widget ,可作为顶层窗口(QMainWindow),可以嵌入到其他窗口

2 QMainWindow

2.1 常用方法

  • QMainWindow就是一个顶层窗口,它可以包含很多界面元素,如菜单栏、工具栏、状态栏、子窗口等等;
  • 源码可参考源码: 在这里插入图片描述在这里插入图片描述
代码语言:python代码运行次数:0复制
PyQt5QtWidgetsQMainWindow.py

2.1.1 addToolBar

  • 添加工具栏;
代码语言:python代码运行次数:0复制
    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代码运行次数:0复制
    def centralWidget(self): # real signature unknown; restored from __doc__
        """ centralWidget(self) -> QWidget """
        return QWidget

2.1.3 menuBar

  • 返回主窗口的菜单栏;
代码语言:python代码运行次数:0复制
    def menuBar(self): # real signature unknown; restored from __doc__
        """ menuBar(self) -> QMenuBar """
        return QMenuBar

2.1.4 setCentralWidget

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

2.1.5 setStatusBar

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

2.1.6 statusBar

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

2.2 窗口示例

2.2.1 空白窗口

代码语言:python代码运行次数:0复制
# -*- 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代码运行次数:0复制
# -*- 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代码运行次数:0复制
# -*- 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代码运行次数:0复制
# -*- 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_())
在这里插入图片描述在这里插入图片描述

0 人点赞