自己的Pyqt5小白学习记录

“Atom:不可再细分的最小颗粒”

——古希腊爱奥尼亚学派,留基伯

我是小白,从网上看Pyqt教程,总是感到头大。要么非常系统,好似直接把正本《初等数论》丢给你,节奏过于缓慢,专业术语太多看得头大,并且缺少实践和实验,都不懂这个组件弄出来是什么样子。如果是看案例教程,则是直接丢上一整个案例的代码,对于纯小白来说还是过于复杂,好多代码存在的原因都不知道,一头雾水。所以我决定从最基本的代码来学,本篇文章则记录我的学习过程。

宇宙大爆炸

import sys
from PyQt5.QtWidgets import QApplication


if __name__ == '__main__':
    app = QApplication(sys.argv)
    sys.exit(app.exec_())

运行,没有窗体弹出,没有任何反应,但是程序保持运行,不会结束,也只能通过关闭终端来强制结束程序。
这段代码导入了最基础的Pyqt中最基础的QApplication类,然后实例化了它。并通过一行“玄学代码”sys.exit(app.exec_())来让程序保持运行着,不会退出。为什么要这行代码,这行代码是怎么运作的,我也不知道。

膨胀

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = QMainWindow()
    sys.exit(app.exec_())

运行,没有窗体弹出,没有任何反应,但是程序保持运行,不会结束,也只能通过关闭终端来强制结束程序。
这段代码导入了非常基础的QMainWindow类,并实例化了他。

冷却

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = QMainWindow()
    qMainWindow.show()
    sys.exit(app.exec_())

运行,弹出了一个非常小的窗口,程序不会自己退出,点击窗口右上角的“X”,窗体关闭,程序随后马上退出。
在这里插入图片描述
这段代码调用了QMainWindow的show()方法,窗体就出现了

万有引力

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

运行,弹出了一个非常小的窗口,程序不会自己退出,点击窗口右上角的“X”,窗体关闭,程序随后马上退出。
在这里插入图片描述
这段代码自己创建了一个类,继承了QMainWindow类,在类的init函数内调用了父类show方法,并实例化了它。

尘埃

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)

        self.show()



if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在这里插入图片描述
父类的resize方法改变了窗体大小

氢元素

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在这里插入图片描述
修改了窗口标题

核聚变

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

完美的窗口居中。
在这里插入图片描述

产生新元素

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在窗体底部出现状态
在这里插入图片描述

万有引力和质量的平方成正比

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        self.menuBar().addMenu('文件')

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

上方出现菜单,有鼠标悬浮,点击效果,非别为浅蓝色和深蓝色。点击后无反应。
在这里插入图片描述

球体

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)
        wenJian.addAction(addNewFile)

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

现在点击文件,能出现“新建文件”选项,并且也存在鼠标悬浮和点击特效。

气态?液态?固态?范德华力。温度。

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)

        addNewFile.triggered.connect(self.doSomething)

        wenJian.addAction(addNewFile)

        self.show()

    def doSomething(self):
        print("doSomething!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

突然代码多了起来。对刚刚新建的action绑定了事件“doSomething”,可以看到在点击了文件-新建文件后,控制台打印出了doSomething!
在这里插入图片描述

元素周期表

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction, QMenu


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)
        addNewFile.triggered.connect(self.doSomething)
        wenJian.addAction(addNewFile)

        output = QMenu('导出', self)
        wenJian.addMenu(output)

        self.show()

    def doSomething(self):
        print("doSomething!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

继续
在这里插入图片描述

恒星?行星?

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction, QMenu


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)
        addNewFile.triggered.connect(self.doSomething)
        wenJian.addAction(addNewFile)

        output = QMenu('导出', self)
        outputAsPNG = QAction('导出为PNG', self)
        outputAsJPG = QAction('导出为JPG', self)
        output.addAction(outputAsPNG)
        output.addAction(outputAsJPG)
        wenJian.addMenu(output)

        self.show()

    def doSomething(self):
        print("doSomething!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在这里插入图片描述

标题逐渐正常,setStatusTip

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction, QMenu


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)
        addNewFile.triggered.connect(self.doSomething)
        wenJian.addAction(addNewFile)

        output = QMenu('导出', self)
        outputAsPNG = QAction('导出为PNG', self)
        outputAsPNG.setStatusTip('这是StatusTip')
        outputAsJPG = QAction('导出为JPG', self)
        output.addAction(outputAsPNG)
        output.addAction(outputAsJPG)
        wenJian.addMenu(output)

        self.show()

    def doSomething(self):
        print("doSomething!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在这里插入图片描述

checkable

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtWidgets import QDesktopWidget, QAction, QMenu


class qmainwindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(666, 666)
        self.setWindowTitle('窗体发展历史')
        self.frameGeometry().moveCenter(QDesktopWidget().availableGeometry().center())
        self.statusBar().showMessage('我的状态是:准备就绪')

        wenJian = self.menuBar().addMenu('文件')
        addNewFile = QAction('新建文件', self)
        addNewFile.triggered.connect(self.doSomething)
        wenJian.addAction(addNewFile)

        output = QMenu('导出', self)
        outputAsPNG = QAction('导出为PNG', self, checkable=True)
        outputAsPNG.setStatusTip('这是StatusTip')
        outputAsPNG.setChecked(True)
        outputAsJPG = QAction('导出为JPG', self)
        output.addAction(outputAsPNG)
        output.addAction(outputAsJPG)
        wenJian.addMenu(output)

        self.show()

    def doSomething(self):
        print("doSomething!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    qMainWindow = qmainwindow()
    sys.exit(app.exec_())

在这里插入图片描述
写到这,可以详细查看https://cloud.tencent.com/developer/article/1907004

猜你喜欢

转载自blog.csdn.net/weixin_45518621/article/details/129656755
今日推荐