PyQt是一个用于创建图形用户界面(GUI)应用程序的Python库。它是Qt库的Python绑定,Qt是一个功能强大且跨平台的C++应用程序开发框架。PyQt允许开发人员使用Python语言来利用Qt的强大功能,从而创建跨平台的桌面应用程序。
PyQt提供了丰富的模块和类,可以用于创建各种GUI应用程序,包括窗口、对话框、按钮、菜单、工具栏、图形绘制、多媒体等。它还支持事件处理、信号与槽机制、多线程编程等特性,使得开发者可以以一种高效和灵活的方式构建交互式和功能丰富的应用程序。
PyQt有两个主要版本:PyQt4和PyQt5。PyQt4适用于Qt4框架,而PyQt5适用于Qt5框架。在使用PyQt之前,需要先安装Qt库和PyQt的相应版本。
1.安装PyQT5 以及QT Designer工具包,这里使用清华大学的源,安装快一些。
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
2.安装PyQt5 会根据Python的安装路径自动进行安装,不需要修改,安装好以后,测试安装是否成功。写下面的代码,运行看运行是否正确。
import sys
from PyQt5 import QtWidgets
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
w.resize(400, 200)
w.setWindowTitle("hello lyshark")
w.show()
exit(app.exec_())
接着直接双击运行,如果成功执行,那么会看到一个窗体生成了。
3.打开QT设计师designer.exe,一般路径是:\Python\Python38\Lib\site-packages\pyqt5_tools\Qt\bin 就可以使用图形界面添加。
4.将设计好的窗口,保存成*.ui文件,Qt Designer设计出来的文件默认为.ui文件,里面包含的类css布局设计语言,如果想用python运行,我们还需要将它转换成.py文件。
输入转换命令:pyuic5 -o main.py main.ui qt工具会自动将其装换为对应的py文件,这样就不需要手动写代码构建了。
5.打开生成的.py文件,Ui_MainWindow这个类已经把布局都写好了。我只要修改调用一下就可以运行。 在代码后面添以下代码:
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
直接点击运行即可看到生成的界面啦,但是运行后,后面会有cmd窗口,不美观,你可以将文件改为 main.pyw 然后运行,就没有后面的CMD窗口了。
import sys
from PyQt5.QtWidgets import QWidget,QApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
self.resize(350,250)
self.move(300,500)
self.setWindowTitle("hello world")
self.show()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
添加按钮,点击后退出。
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
btn=QPushButton("提交",self)
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.move(102,102)
self.setGeometry(300,300,300,300)
self.show()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
总之,PyQt是一个功能强大的GUI开发库,适用于各种规模和复杂度的应用程序开发,无论是简单的小工具还是复杂的跨平台应用程序,都可以使用PyQt来实现。