• 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.

  • 相关阅读:
    [51nod1247]可能的路径(思维题)
    天梯赛L1020 帅到没朋友(map的使用)(模拟,数组非排序去重)
    洛谷 p1030 树的遍历
    天梯赛L1046 整除光棍(模拟)
    牛客,并查集,简单dp经商
    天梯赛L1043 阅览室 模拟题
    天梯赛L1049(模拟+vector的使用)
    天梯赛L1011,简单模拟
    codeforces 1201 c
    天梯赛L2003月饼(简单排序题)
  • 原文地址:https://www.cnblogs.com/hellovenus/p/qt_pyqt5.html
Copyright © 2020-2023  润新知