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_())

在这里插入图片描述

目录
相关文章
|
7月前
Qt3个窗口类的区别
一个普通的窗口,不包含菜单栏、状态栏,除了登录界面,新建项目时建议使用QWidget,因为大部分的窗口可能都要做成无边框窗口,需要自定义标题栏,实现拉伸等;QMainWindow使用的场景不多。:对话框,常用来做登录窗口、弹出窗口(例如设置界面):包含菜单栏、工具栏、状态栏。
61 0
|
Python
Pyside6-第一篇-创建第一个窗口
Pyside6-第一篇-创建第一个窗口
339 0
|
计算机视觉 容器
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
QT软件开发: QPlainTextEdit当做日志显示窗口
QT软件开发: QPlainTextEdit当做日志显示窗口
763 0
QT软件开发: QPlainTextEdit当做日志显示窗口
|
5月前
|
Python
创建一个新的Tkinter窗口实例,并将其赋值给变量`root`。这个窗口是应用程序的主窗口。
创建一个新的Tkinter窗口实例,并将其赋值给变量`root`。这个窗口是应用程序的主窗口。
|
6月前
Qt MainWindow 程序主窗口
Qt MainWindow 程序主窗口
|
缓存
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
626 0
|
Python
Python tkinter库之Toplevel 子窗口与主窗口之间的联系
Python tkinter库之Toplevel 子窗口与主窗口之间的联系
372 0
Qt-第一个QML程序-3-自定义一个按钮
项目基本信息前两个已经说了,这里直接放下运行截图,
195 0
Qt-第一个QML程序-3-自定义一个按钮