Qt——结合qt和python
经常使用qt的童鞋一定有过这样的经历:百度或Google某个关于Qt的问题的时候,发现有的解答不是用的C++,而是包含很多py、__init__、self之类的词。
如果学过python,你会发现,这些不都是python中的类和函数吗?
OK,下面对它作简单的介绍——
一、PyQt5
PyQt5一个编写界面和应用程序的工具,它将python语言编程和Qt库结合起来,可以用python编写跨平台的应用。
闭上眼想一想,用基于C++的Qt来设计界面是不是很容易,而且效率很高?Python有多强大,写各种程序都省时省力,尤其是爬虫的时候有谁能比它厉害?将它们结合起来使用,你是不是无敌了?好吧,这都是我YY出来的,还是回到现实吧。
PyQt5的官方教程:点我!
使用的时候与C++中差不多,只不过用的是python的语法。
二、安装
1.首先需要安装python,可以到官网下载,我是安装的python科学计算版本Anaconda中的python3.5。
2.接下来是安装PyQt5,于是我找到了这个网页,可以直接下载下来安装,也可以使用命令安装,于是我随手一敲——
pip install PyQt5
然后写了个测试程序,问题来了,总是出错,提示找不到模块。
于是继续百度&谷歌,发现PyQt5不支持python3.5!那该怎么办?再安装一个低版本的python?
并没有,
最后终于在一个神奇的地方,找到了适合python3.5的PyQt,点我!
选择与自己系统匹配的安装文件,安装完成之后就能正常使用了。
三、小试牛刀
写一个非常简单的登录界面试试:
import sys from PyQt5 import QtWidgets from PyQt5.QtWidgets import * class LoginWidget(QtWidgets.QWidget): def __init__(self, parent=None): super().__init__(parent) self.initUi() def initUi(self): #初始化窗口部件 usrLbl = QLabel() usrEdit = QLineEdit() pwdLbl = QLabel() pwdEdit = QLineEdit() confirmBtn = QPushButton() cancelBtn = QPushButton() usrLbl.setText('用户名') pwdLbl.setText('密码') confirmBtn.setText('确定') cancelBtn.setText('取消') hrLayot1 = QHBoxLayout() hrLayot2 = QHBoxLayout() hrLayot3 = QHBoxLayout() hrLayot1.addWidget(usrLbl) hrLayot1.addWidget(usrEdit) hrLayot2.addWidget(pwdLbl) hrLayot2.addWidget(pwdEdit) hrLayot3.addWidget(confirmBtn) hrLayot3.addWidget(cancelBtn) vrLayout = QVBoxLayout() vrLayout.addLayout(hrLayot1) vrLayout.addLayout(hrLayot2) vrLayout.addLayout(hrLayot3) self.setLayout(vrLayout) self.setWindowTitle("登录窗口") #信号槽连接 confirmBtn.clicked.connect(self.confirmBtnClicked) cancelBtn.clicked.connect(self.cancelBtnClicked) def confirmBtnClicked(self): print('您点击了确定按钮') def cancelBtnClicked(self): print('您点击了取消按钮') self.close() if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) loginWgt = LoginWidget() loginWgt.show() sys.exit(app.exec_())
运行后的界面如下:
从代码中可以看到,qt中各个部件还有布局之类的,语法和一些函数与python中的使用几乎是一样的。
不同的地方是信号槽的连接,参考官方文档:点我!
That's all.