PyQt【第一篇】第一个PyQt5程序

简介

测试环境:Python3.5 + PyQt5

PyQt5的类被划分在下列模块中

QtCore 模块包含核心非GUI 功能.这个模块用于处理 时间,文件和路径,变量数据类型,流,URL,mime types,线程或进程。
QtGui 包含 窗口类,时间处理机制,2D图形,基础绘图,字体和文本。
QtWidgets模块包含的类,用于提供实现标准桌面ui 元素。
QtMultimedia 包含 用于处理多媒体内容的类,控制相机 收音机功能的 API.
QtBluetooth 模块的类,用于 扫描和链接周围的设备。
QtNetwork 模块的类,用于网络编程。这些类使人能够更方便的编写 TCP/IP 和 UDP 的客户端,服务器程序。
QtPositioning 包含的类,用于通过各种方法进行定位,如 卫星,Wi-Fi 或 文本文件。
Enginio 模块 实现了 客户端访问 Qt 云服务.
QtWebSockets 模块包含了一些类,实现 WebSocket 协议。
QtWebKit 包含一些类,用于实现 WebKit2库基础上的 web浏览器。
QtWebKitWidgets 包含一些类,用于在 Qt控件的基础上,实现 基于WebKit1库  的 web浏览器。
QtXml 包含一些用于处理 XML文件的类。这个模块分别提供了 基于SAX 和 DOM APIs 的实现。
QtSvg 模块提供了一些类,用于显示 SVG(Scalable Vector Graphics)文件的内容。
QtSql 模块提供了用于处理数据库的类。
QtTest 包含给 QtPy5 应用程序开启单元测试的函数。 

创建窗口

面向过程 

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

"""第一个PyQt程序"""
from PyQt5 import QtWidgets

import sys

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QWidget()  # Qwidget组件是PyQt5中所有用户界面类的基础类
    w.resize(400, 200)  # 窗口大小
    w.move(300, 300)  # 移动widget组件(窗口)到一个位置
    w.setWindowTitle("第一个Qt程序")  # 设置了我们窗口的标题
    w.show()  # show()方法在屏幕上显示出widget
    sys.exit(app.exec_())

面向对象

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

"""第一个PyQt程序"""
from PyQt5 import QtWidgets
import sys


class W(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle("第一个Qt程序")
        self.show()


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

设置程序图标

 

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

import sys
from PyQt5 import QtWidgets, QtGui


class W(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle("第一个Qt程序")
        self.setWindowIcon(QtGui.QIcon(r'sample.ico'))  # 本地有个sample.ico文件
        self.show() 


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

关闭窗口

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

import sys
from PyQt5 import QtWidgets, QtCore


class W(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle("第一个Qt程序")

        self.QBtn()
        self.show()

    def QBtn(self):
        qbtn = QtWidgets.QPushButton('退出', self) # 创建一个按钮
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)  # 点击按钮关闭窗口
        qbtn.resize(qbtn.sizeHint()) # setHint()方法给了按钮一个推荐的大小。
        qbtn.move(50, 50)  # 移动widget组件到一个位置


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

消息窗口

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

import sys
from PyQt5 import QtWidgets, QtGui


class W(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle("第一个Qt程序")
        self.setWindowIcon(QtGui.QIcon(r'sample.ico'))
        self.show()

    def closeEvent(self, event):

        reply = QtWidgets.QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QtWidgets.QMessageBox.Yes |
                                               QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No)

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


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

窗口在屏幕中心

# _*_ encoding:utf-8 _*_
__author__ = 'hy'

import sys
from PyQt5 import QtWidgets


class W(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle("第一个Qt程序")
        self.center()
        self.show()

    def center(self):
        screen = QtWidgets.QDesktopWidget().screenGeometry()  # 屏幕位置、大小信息(0, 0, 1920, 1080)
        size = self.geometry()  # 窗口位置、大小信息(300, 300, 400, 200)
        print(screen, size)
        self.move((screen.width() - size.width())/2, (screen.height() - size.height())/2)


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

 

posted @ 2017-10-19 20:29  沐风先生  阅读(851)  评论(0编辑  收藏  举报