0
点赞
收藏
分享

微信扫一扫

PyQt5第一课

绪风 2022-05-04 阅读 87

因为想把python实现的功能做个界面程序,学习一下PyQt
参考资料:https://maicss.gitbook.io/pyqt-chinese-tutoral/pyqt5/hello_world
这个文档第一节一共有六个例子,我把他们都写在一起,代码和注释如下
先放运行效果:
在这里插入图片描述

from PyQt5.QtWidgets import QApplication,QWidget,QToolTip,QPushButton,QMessageBox,QDesktopWidget
from PyQt5.QtGui import QIcon,QFont#创建应用图标
#构造一个 Qt core 应用程序。core 应用程序是没有图形用户界面的应用程序。此类应用程序用于控制台或服务器进程。
from PyQt5.QtCore import QCoreApplication
import sys
#过程式编程,这是第一个小例子,后面不会用到了
def firstapp():
    app=QApplication(sys.argv)#控制脚本开始运行的方式,sys.argv提供命令行的一些参数,这样python脚本就能从shell运行

    window=QWidget()#采用默认构造,没有父对象的widget也就是window窗体
    window.setWindowTitle('linan first app')#加标题,标题在标题栏展示
    window.resize(300,300)#设置窗口大小
    window.show()#让窗口从内存显示到屏幕中,窗口是在内存中创建出来的,

    sys.exit(app.exec_())#exec是python关键字,所以qt的函数加了underscore
#面向对象的方法
class Apptest(QWidget):
    def __init__(self):#构造函数,实例初始化
        #调用了两个构造器,一个是这个类本身的,一个是这个类继承的
        super().__init__()#super()构造器方法返回父级的对象
        self.initUI()#每个对象创建后都会执行这个函数

    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))

        btn = QPushButton('按钮', self)#第一个参数是按钮的文本,第二个参数是按钮的父级组件
        btn.setToolTip('This is a <b>QPushButton</b> widget')
        btn.resize(btn.sizeHint())
        btn.move(50, 50)

        qbtn = QPushButton('Quit', self)
        #QCoreApplication包含了事件的主循环,它能添加和删除所有的事件,instance()创建了一个它的实例。
        #QCoreApplication是在QApplication里创建的。 点击事件和能终止进程并退出应用的quit函数绑定在了一起。
        # 在发送者和接受者之间建立了通讯,发送者就是按钮,接受者就是应用对象。
        qbtn.clicked.connect(QCoreApplication.instance().quit)#用于退出程序的按钮,用到了信号和槽
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(150, 50)

        #调用setTooltip()创建提示框可以使用富文本格式的内容
        self.setToolTip('This is a <b>QWidget</b> widget')#<b>加粗文本
        self.setGeometry(300, 300, 300, 220)#相当于resize和move方法的合体
        self.setWindowTitle('带Icon的窗体')
        self.center()#自定义的函数,把窗口挪到中间
        self.show()
    #消息盒子
    def closeEvent(self, event):
        #参数按顺序分别是(忽略self),标题栏显示的信息,对话框内显示的信息
        # 消息框内的两个按钮,默认选中的按钮(可以看到这里默认选否)
        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()#点击是 则退出程序,接受该信号(退出程序)
        else:
            event.ignore()#点击否 忽略该信号
    #程序放在屏幕中央
    def center(self):

        qr = self.frameGeometry()#获得主窗口所在的框架。
        #QDesktopWidget提供了用户的桌面信息,包括屏幕的大小。
        cp = QDesktopWidget().availableGeometry().center()#获取显示器的分辨率,然后得到屏幕中间点的位置。
        print(cp)
        #通过move函数把主窗口的左上角移动到其框架的左上角,这样就把窗口居中了。
        qr.moveCenter(cp)
        self.move(qr.topLeft())
if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Apptest()
    app.setWindowIcon(QIcon('app.ico'))
    sys.exit(app.exec_())
举报

相关推荐

0 条评论