赞
踩
一直想学一下python,特别是十一前抢票时达到顶峰。我正好是Qter,所以在网上找了一个教程直接学PyQt。
Win10+Qt5.15.2 +python3.11
之前安装python时好像自动安装了python的包管理工具pip,配置pyqt环境所需要安装的包都是使用pip进行安装的(在cmd中输入命令)。
在安装前可通过命令pip list查看已安装的包 ,看哪些没安装 ,根据下面的命令进行安装。
Python中使用C/C++模块有许多工具,大名鼎鼎的有SWIG(英文意思为:豪饮)、SIP(英文意思为:啜饮,小口的喝),还有boost.python等。其中SIP是从SWIG发展而来,专为Python调用C/C++模块使用的
pip install sip
关于使用:Python SIP使用总结(Win&Linux通用)-蒲公英云
对于用python在Qt进行界面开发,有两个框架,PyQt5和PySide6,选哪个都可以,他们两个分别是不同的公司开发的,PyQt5早,PySide6晚,所以相对于的PyQt5的网上资料更多些。但是PySide6是Qt公司开发的,所以Qt Creator上推荐下载PySide6。还有。PySide是LGPL协议,LGPL协议是一个商业友好的协议使用 LGPL 协议开发闭源程序,如果你使用动态链接的形式,那么,你可以以任何形式(商业的、非商业的、开源的、非开源的等等)发布你的应用程序。
pip install PyQt5
pip3 install PySide6
Python LSP(Language Server Protocol)是一种通过 JSON-RPC 通信协议实现的轻量级、跨编程语言的编写代码时的编辑器和工具语言服务器协议。Python LSP 是一种新的方式使编辑器能够更好地了解源代码的语义,并提供适当的补全、跳转、符号搜索、格式化等功能,暴露语言特定的 API 给编辑器/IDE。Python LSP 对于 Python 开发者来说是一个非常实用的工具。
pip install python-lsp-server
若由于一些局域网的原因,使用 pip 出现 “connection timeout”,连接超时可以使用国内的镜像网站下载:
例如安装PyQt5可这么写:
#python安装路径#\python.exe -m pip install PyQt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
具体关于pip的使用可以参考
由于我比较习惯使用Qt Creator 的编辑器,所以我使用的是PySide6框架进行开发的。然后因为我还不会使用python语言添加控件,所以我在创建平台时,选择了带有ui文件的
可选择pyside的版本:pyside2 或者pyside6
在创建完成后,可以看到生成了三个文件,
test.pyproject为项目文件,描述了此项目中包含的文件
- {
- "files": ["widget.py", "form.ui"]
- }
widget.py文件里包含了类Widget的声明和定义,和main函数
- # This Python file uses the following encoding: utf-8
- import sys
-
- from PySide6.QtWidgets import QApplication, QWidget
-
- # Important:
- # You need to run the following command to generate the ui_form.py file
- # pyside6-uic form.ui -o ui_form.py, or
- # pyside2-uic form.ui -o ui_form.py
- from ui_form import Ui_Widget
-
- class Widget(QWidget):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.ui = Ui_Widget()
- self.ui.setupUi(self)
-
-
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- widget = Widget()
- widget.show()
- sys.exit(app.exec())
上面 from ui_form import Ui_Widget 即是对ui文件的引用(包含),我在ui文件中添加了一个Label ,在对此项目运行后,打开ui文件所在路径,可看到已经生成了一个py文件:“ui_form.py”
具体代码如下:
- # -*- coding: utf-8 -*-
-
- ################################################################################
- ## Form generated from reading UI file 'form.ui'
- ##
- ## Created by: Qt User Interface Compiler version 6.6.0
- ##
- ## WARNING! All changes made in this file will be lost when recompiling UI file!
- ################################################################################
-
- from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
- QMetaObject, QObject, QPoint, QRect,
- QSize, QTime, QUrl, Qt)
- from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
- QFont, QFontDatabase, QGradient, QIcon,
- QImage, QKeySequence, QLinearGradient, QPainter,
- QPalette, QPixmap, QRadialGradient, QTransform)
- from PySide6.QtWidgets import (QApplication, QLabel, QSizePolicy, QWidget)
-
- class Ui_Widget(object):
- def setupUi(self, Widget):
- if not Widget.objectName():
- Widget.setObjectName(u"Widget")
- Widget.resize(800, 600)
- self.label = QLabel(Widget)
- self.label.setObjectName(u"label")
- self.label.setGeometry(QRect(310, 230, 141, 61))
- font = QFont()
- font.setPointSize(20)
- font.setBold(True)
- self.label.setFont(font)
-
- self.retranslateUi(Widget)
-
- QMetaObject.connectSlotsByName(Widget)
- # setupUi
-
- def retranslateUi(self, Widget):
- Widget.setWindowTitle(QCoreApplication.translate("Widget", u"Widget", None))
- self.label.setText(QCoreApplication.translate("Widget", u"Hello !!!", None))
- # retranslateUi
-
上面看着库的导入还是label的创建,都比较正常,就是界面的重译(retranslateUi)有点怪,后面查了下资料说是:retranslateUi()函数集中设置了窗体上所有的字符串,利于实现软件的多语言界面。这样也就能理解了。
运行结果:
若是之前是有python基础的,可能更习惯使用PyCharm编辑,在网上也有相关教程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。