前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQt5-基本控件| 主窗口的类型、创建以及代码如何实现?

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

原创
作者头像
虫无涯
发布2023-10-24 15:50:52
3390
发布2023-10-24 15:50:52
举报
文章被收录于专栏:全栈测试技术全栈测试技术

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

2.1.3 menuBar

  • 返回主窗口的菜单栏;
代码语言: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_())
在这里插入图片描述
在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 主窗口的类型
  • 2 QMainWindow
    • 2.1 常用方法
      • 2.1.1 addToolBar
      • 2.1.2 centralWidget
      • 2.1.3 menuBar
      • 2.1.4 setCentralWidget
      • 2.1.5 setStatusBar
      • 2.1.6 statusBar
    • 2.2 窗口示例
      • 2.2.1 空白窗口
      • 2.2.2 通用标准写法
  • 3 QWidget
  • 4 QDialog
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档