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.

posted @ 2016-10-24 22:26  去冰三分糖  阅读(7170)  评论(0编辑  收藏  举报