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_())
谢谢