PyQt5快速入门---QyQt 1

这篇博客介绍了PyQt5的基础应用,包括设置窗口大小、弹出提示信息、实现关闭时的询问窗口功能以及窗体的居中显示。通过示例代码展示了如何使用QMainWindow类创建主窗口,并添加状态栏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

申明

学习资料来源于https://download.youkuaiyun.com/download/l1505624/9627827
感谢作者

设置窗口

首先导入sys宏包,这是为了接收sys.args参数。
定义MyWidget类,继承自QWidget类,这里是是通过swtGeometry方法调整窗口,后面可以用resize的方法调整

import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(0,0,800,800)
        self.setWindowTitle("Maapp")
        self.setWindowIcon(QIcon \
                               ("E:\py_code\作业\第三次作业\mm.jpg"))


myapp=QApplication(sys.argv)
mywidget=MyWidget()
mywidget.show()
sys.exit(myapp.exec_())

在这里插入图片描述

弹出提示信息

 self.setToolTip("看什么看")
        QToolTip.setFont(QFont("微软雅黑",12))

来设置信息和字体。

import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Mywindget(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800,600)
        self.setWindowTitle("myapp")
        self.setWindowIcon(QIcon("E:\py_code\作业\第三次作业\mm.jpg"))
        self.setToolTip("看什么看")
        QToolTip.setFont(QFont("微软雅黑",12))
#

myapp=QApplication(sys.argv)
mywindge=Mywindget()
mywindge.show()
sys.exit(myapp.exec_())

在这里插入图片描述
鼠标放上去一段时间就能显示信息

关闭时询问窗口

定义closeEvent类,接收event,用QMessageBos来设置询问窗口和接受确认信息。

import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Mywindget(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800,600)
        self.setWindowTitle("myapp")
        self.setWindowIcon(QIcon("E:\py_code\作业\第三次作业\mm.jpg"))
        self.setToolTip("看什么看")
        QToolTip.setFont(QFont("微软雅黑",12))


    def closeEvent(self, event):
        reply = QMessageBox.question(self, "信息", "你确定要退出吗",
                                     QMessageBox.Yes, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

myapp=QApplication(sys.argv)
mywindge=Mywindget()
mywindge.show()
sys.exit(myapp.exec_())

在这里插入图片描述

窗体居中显示

核心代码
    def center(self):
        screen=QDesktopWidget().screenGeometry()
        size=self.geometry()
        self.move((screen.width()-size.width())/2,
                  (screen.height()-size.height()/2))

QDesktopWidget().screenGeometry() 这个得到的时屏幕的大小
size=self.geometry() 这个得到的是窗体大小。
self.move((screen.width()-size.width())/2,
(screen.height()-size.height()/2)) 这是居中操作

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Mywidget(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800,600)
        self.center()
        self.setWindowTitle("我的第一个app")
        self.setWindowIcon(QIcon\
                               ("E:\py_code\作业\第三次作业\mm.jpg"))
        self.setToolTip("想知道什么")
        QToolTip.setFont(QFont\
                             ("微软雅黑",12))

    def closeEvent(self, event):
        reply=QMessageBox.question\
            (self,"信息",
             "你确定要离开吗",
             QMessageBox.Yes,QMessageBox.No)

        if reply==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):
        screen=QDesktopWidget().screenGeometry()
        size=self.geometry()
        self.move((screen.width()-size.width())/2,
                  (screen.height()-size.height())/2)


myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())

QMainQWindow类

QtGui.QMainWindow类提供应用程序主窗口,可以创建一个经典的拥有状态栏,工具栏和菜单栏的应用程序骨架。

我们前面的例子使用的都是QtGui.QWidget类创建的窗体。

QtGui.QWidget在qt中是所有可画类的基础,任何基于QWidget类都可以作为独立的窗口显示出来二不需要parent

QMainWindow类是针对主窗体的一般需求设定的,它预定了菜单状态栏和其他widget(窗口小部件)。因为它继承自Qwidget,前面所有的属性修改都适用于它。

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Mywidget(QMainWindow):
    def __init__(self):
        super().__init__()
        self.resize(800,600)
        self.center()
        self.setWindowTitle("我的第一个app")
        self.setWindowIcon(QIcon\
                               ("E:\py_code\作业\第三次作业\mm.jpg"))
        self.setToolTip("想知道什么")
        QToolTip.setFont(QFont\
                             ("微软雅黑",12))

    def closeEvent(self, event):
        reply=QMessageBox.question\
            (self,"信息",
             "你确定要离开吗",
             QMessageBox.Yes,QMessageBox.No)

        if reply==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):
        screen=QDesktopWidget().screenGeometry()
        size=self.geometry()
        self.move((screen.width()-size.width())/2,
                  (screen.height()-size.height())/2)


myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())
把继承的类换掉之后运行良好。

加上状态栏

在这里插入图片描述

在初始化方法里加上一个self.statusBar().showMessage(“程序已经就绪”)。
也可以在下面写在这里插入图片描述

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Mywidget(QMainWindow):
    def __init__(self):
        super().__init__()
        self.resize(800,600)
        self.center()
        self.setWindowTitle("我的第一个app")
        self.setWindowIcon(QIcon\
                               ("E:\py_code\作业\第三次作业\mm.jpg"))
        self.setToolTip("想知道什么")
        QToolTip.setFont(QFont\
                             ("微软雅黑",12))
        self.statusBar().showMessage("程序已经就绪")

    def closeEvent(self, event):
        reply=QMessageBox.question\
            (self,"信息",
             "你确定要离开吗",
             QMessageBox.Yes,QMessageBox.No)

        if reply==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):
        screen=QDesktopWidget().screenGeometry()
        size=self.geometry()
        self.move((screen.width()-size.width())/2,
                  (screen.height()-size.height())/2)


myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())

加上状态栏

在这里插入图片描述

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        """
        初始化UI界面
        """
        self.resize(800, 600)
        self.center()
        self.setWindowTitle("myapp")
        self.setWindowIcon(QIcon("E:\py_code\作业\第三次作业\mm.jpg"))

        # 菜单栏
        menu_control = self.menuBar().addMenu("Control")
        act_quit = menu_control.addAction("quit")
        act_quit.triggered.connect(self.close)  # 待定

        menu_help = self.menuBar().addMenu("Help")
        act_about = menu_help.addAction("adout...")
        act_about.triggered.connect(self.about)
        act_aboutqt = menu_help.addAction("aboutqt")
        act_aboutqt.triggered.connect(self.aboutqt)

        # 状态栏
        self.statusBar().showMessage("程序已经就绪")
        self.show()

    def about(self):
        QMessageBox.about(self, "about this software", "wise system")

    def aboutqt(self):
        QMessageBox.about(self)

    def center(self):
        """
        设置居中
        :return:None
        """
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()

        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def colseEvent(self, event):
        """
        重新定义closeEvent
        :return: None
        """
        reply = QMessageBox.question(self, "信息",
                                     "确定退出吗",
                                     QMessageBox.Yes, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()




myapp = QApplication(sys.argv)
mainwindow = MainWindow()
mainwindow.show()
sys.exit(myapp.exec_())

author:specyue@mail.ustc.edu.cn 欢迎交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值