一:安装PyQt5
pip install pyqt5
二:PyQt5简单使用
1:使用PyQt5创建一个简单窗口
- import sys
- from PyQt5 import QtWidgets
- #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
- # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
- app = QtWidgets.QApplication(sys.argv)
- #创建一个widget组件基础类
- windows = QtWidgets.QWidget()
- #设置widget组件的大小(w,h)
- windows.resize(500,500)
- #设置widget组件的位置(x,y)
- windows.move(100,100)
- """
- #设置widget组件的位置居中
- qr = windows.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- windows.move(qr.topLeft())
- """
- #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
- #windows.setGeometry(100,100,500,500)
- #show()方法在屏幕上显示出widget组件
- windows.show()
- #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
- sys.exit(app.exec_())
现象如下:
2:给创建的窗口添加标题和图标
- import sys
- from PyQt5 import QtWidgets,QtGui
- #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
- # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
- app = QtWidgets.QApplication(sys.argv)
- #创建一个widget组件基础类
- windows = QtWidgets.QWidget()
- #设置widget组件的大小(w,h)
- windows.resize(500,500)
- #设置widget组件的位置(x,y)
- windows.move(100,100)
- """
- #设置widget组件的位置居中
- qr = windows.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- windows.move(qr.topLeft())
- """
- #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
- #windows.setGeometry(100,100,500,500)
- #给widget组件设置标题
- windows.setWindowTitle('标题')
- #给widget组件设置图标
- windows.setWindowIcon(QtGui.QIcon('2.png'))
- #show()方法在屏幕上显示出widget组件
- windows.show()
- #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
- sys.exit(app.exec_())
现象如下:
3:给创建的窗口设置按钮及设置提示语
- import sys
- from PyQt5 import QtWidgets,QtGui
- #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
- # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
- app = QtWidgets.QApplication(sys.argv)
- #创建一个widget组件基础类
- windows = QtWidgets.QWidget()
- #设置widget组件的大小(w,h)
- windows.resize(500,500)
- #设置widget组件的位置(x,y)
- windows.move(100,100)
- """
- #设置widget组件的位置居中
- qr = windows.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- windows.move(qr.topLeft())
- """
- #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
- #windows.setGeometry(100,100,500,500)
- #给widget组件设置标题
- windows.setWindowTitle('标题')
- #给widget组件设置图标
- windows.setWindowIcon(QtGui.QIcon('2.png'))
- #设置提示语的字体和大小
- QtWidgets.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
- #给widget组件设置提示语
- windows.setToolTip('这是窗口提示')
- #设置按钮并给按钮命名
- btn = QtWidgets.QPushButton('button',windows)
- #给按钮设置位置(x,y,w,h)
- btn.setGeometry(200,200,100,50)
- #给按钮设置提示语
- btn.setToolTip('这是按钮提示')
- #设置按钮样式
- btn.setStyleSheet("background-color: rgb(164, 185, 255);"
- "border-color: rgb(170, 150, 163);"
- "font: 75 12pt \"Arial Narrow\";"
- "color: rgb(126, 255, 46);")
- #点击按钮关闭创建的窗口
- btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
- #show()方法在屏幕上显示出widget组件
- windows.show()
- #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
- sys.exit(app.exec_())
现象如下(点击button按钮,窗口关闭):
4:设置标签(lable)信息
- import sys
- from PyQt5 import QtWidgets,QtGui,QtCore
- #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
- # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
- app = QtWidgets.QApplication(sys.argv)
- #创建一个widget组件基础类
- windows = QtWidgets.QWidget()
- #设置widget组件的大小(w,h)
- windows.resize(500,500)
- #设置widget组件的位置(x,y)
- windows.move(100,100)
- """
- #设置widget组件的位置居中
- qr = windows.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- windows.move(qr.topLeft())
- """
- #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
- #windows.setGeometry(100,100,500,500)
- #给widget组件设置标题
- windows.setWindowTitle('标题')
- #给widget组件设置图标
- windows.setWindowIcon(QtGui.QIcon('2.png'))
- #设置lable信息
- label = QtWidgets.QLabel(windows)
- label.setGeometry(QtCore.QRect(100, 10, 100, 60))
- label.setText('这是lable信息')
- label.setObjectName('label')
- #show()方法在屏幕上显示出widget组件
- windows.show()
- #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
- sys.exit(app.exec_())
现象如下:
5:配置输入框
- import sys
- from PyQt5 import QtWidgets,QtGui,QtCore,Qt
- #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
- # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
- app = QtWidgets.QApplication(sys.argv)
- #创建一个widget组件基础类
- windows = QtWidgets.QWidget()
- #设置widget组件的大小(w,h)
- windows.resize(500,500)
- #设置widget组件的位置(x,y)
- windows.move(100,100)
- """
- #设置widget组件的位置居中
- qr = windows.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- windows.move(qr.topLeft())
- """
- #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
- #windows.setGeometry(100,100,500,500)
- #给widget组件设置标题
- windows.setWindowTitle('标题')
- #给widget组件设置图标
- windows.setWindowIcon(QtGui.QIcon('2.png'))
- #设置输入框
- textbox = Qt.QLineEdit(windows)
- textbox.resize(100,20)
- textbox.move(50,50)
- #show()方法在屏幕上显示出widget组件
- windows.show()
- #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
- sys.exit(app.exec_())
现象如下:
三:将上述方法总结一下实现了一个简单的功能,如下:
功能为:在输入框中输入值过后,点击按钮就会打印出你输入的值,关闭窗口会有提示
- import sys
- from PyQt5 import QtWidgets,QtGui,QtCore,Qt
- class GUI(QtWidgets.QWidget):
- def __init__(self):
- #初始化————init__
- super().__init__()
- self.initGUI()
- def initGUI(self):
- #设置窗口大小
- self.resize(500,500)
- #设置窗口位置(下面配置的是居于屏幕中间)
- qr = self.frameGeometry()
- cp = QtWidgets.QDesktopWidget().availableGeometry().center()
- qr.moveCenter(cp)
- self.move(qr.topLeft())
- #设置窗口标题和图标
- self.setWindowTitle('窗口标题')
- self.setWindowIcon(QtGui.QIcon('2.png'))
- #设置窗口提示
- self.setToolTip('窗口提示')
- #设置label信息
- self.label = QtWidgets.QLabel(self)
- self.label.setGeometry(QtCore.QRect(100, 10, 100, 60))
- self.label.setText('这是lable信息')
- self.label.setObjectName('label')
- # 设置label提示
- self.label.setToolTip('label提示')
- #设置输入框
- self.textbox = Qt.QLineEdit(self)
- self.textbox.resize(100, 20)
- self.textbox.move(100, 50)
- # 设置输入框提示
- self.textbox.setToolTip('输入框提示')
- #设置按钮
- self.btn =QtWidgets.QPushButton('按钮',self)
- self.btn.resize(100,20)
- self.btn.move(200,50)
- # 设置按钮样式
- self.btn.setStyleSheet("background-color: rgb(164, 185, 255);"
- "border-color: rgb(170, 150, 163);"
- "font: 75 12pt \"Arial Narrow\";"
- "color: rgb(126, 255, 46);")
- # 设置按钮提示
- self.btn.setToolTip('按钮提示')
- #点击鼠标触发事件
- self.btn.clicked.connect(self.clickbtn)
- #展示窗口
- self.show();
- #点击鼠标触发函数
- def clickbtn(self):
- #打印出输入框的信息
- textboxValue = self.textbox.text()
- QtWidgets.QMessageBox.question(self, "信息", '你输入的输入框内容为:' + textboxValue,QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
- #清空输入框信息
- self.textbox.setText('')
- #关闭窗口事件重写
- def closeEvent(self, QCloseEvent):
- reply = QtWidgets.QMessageBox.question(self, '警告',"确定关闭当前窗口?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No)
- if reply == QtWidgets.QMessageBox.Yes:
- QCloseEvent.accept()
- else:
- QCloseEvent.ignore()
- if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- gui = GUI()
- sys.exit(app.exec_())
现象为: