mac下,vs code的PyQt6(PySide6)配置

mac下,vs code的PyQt6、PySide6配置(使用anaconda)

安装

  1. 推荐安装pyside6,和pyqt6一致,主要区别在开源协议。
pip install pyside6
  1. vs code 安装 Qt for python 插件。

在这里插入图片描述

配置

要配置的参数一共有五个,包括

  1. Designer path
  2. rcc path
  3. uic path
  4. rcc args (复制即可)
  5. uic args (复制即可)

在扩展页面点击 扩展设置 。进入扩展设置

在这里插入图片描述

点击 在setting.json中编辑

在这里插入图片描述
把下面的粘贴到末尾。然后开始替换前面三个的路径(下面为null的部分)

    "qtForPython.designer.path": null,
    "qtForPython.rcc.path": null,
    "qtForPython.uic.path": null,
   
    "qtForPython.uic.args": [
        "-o ${fileDirname}${pathSeparator}Ui_${fileBasenameNoExtension}.py"
    ],
    "qtForPython.rcc.args": [
        "-o ${fileDirname}${pathSeparator}rc_${fileBasenameNoExtension}.py"
    ],
  1. 其中rcc 文件 和uic 文件是在一起的。其路径为:“/Users/yong/opt/anaconda3/envs/pyqt/bin/pyside6-rcc” 在这里插入图片描述
  2. designer path 有点麻烦。用python pip show pyside6 查看pyside6的安装路径
    在这里插入图片描述
    打开Location,找到 PySide6 ,其中有 Designer.app ,右键 显示包内容 。然后 Contents -> MacOS ,这里有个Designer,即上面所需要的designer path。
    我的路径为 /Users/yong/opt/anaconda3/envs/pyqt/lib/python3.8/site-packages/PySide6/Designer.app/Contents/MacOS/Designer ,填入setting.json即可。

这里Designer.app可以直接打开,完成设计后将ui文件编译为py文件,然后使用python导入,效果一致

测试

在vs code左侧资源管理器,右键点击最下面的 New Form
在这里插入图片描述
出现这些窗口表示Designer 配置成功

在这里插入图片描述

绘制一个窗口。然后对这个ui文件点击 Compile Form into Qt for Python File

在这里插入图片描述

出现了Ui_test.py表示编译成功。

安装结束

这里给一份我的代码以供大家测试

附代码

main.py

import sys
from PySide6 import QtCore, QtWidgets, QtGui
import Ui_test 

class TestWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        ui =  Ui_test.Ui_MainWindow()
        ui.setupUi(self)
    
    @QtCore.Slot()#槽函数用它装饰
    def login(self): #在Qt Designer中为登录按钮命名的槽函数;
        print("你点击了登录")

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = TestWindow()
    widget.show()
    sys.exit(app.exec())

test.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>240</x>
      <y>180</y>
      <width>58</width>
      <height>16</height>
     </rect>
    </property>
    <property name="text">
     <string>用户名:</string>
    </property>
   </widget>
   <widget class="QTextEdit" name="textEdit">
    <property name="geometry">
     <rect>
      <x>290</x>
      <y>180</y>
      <width>211</width>
      <height>21</height>
     </rect>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>240</x>
      <y>220</y>
      <width>31</width>
      <height>16</height>
     </rect>
    </property>
    <property name="text">
     <string>密码:</string>
    </property>
   </widget>
   <widget class="QTextEdit" name="textEdit_2">
    <property name="geometry">
     <rect>
      <x>293</x>
      <y>220</y>
      <width>211</width>
      <height>21</height>
     </rect>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>330</x>
      <y>270</y>
      <width>100</width>
      <height>32</height>
     </rect>
    </property>
    <property name="text">
     <string>login</string>
    </property>
   </widget>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>pushButton</sender>
   <signal>clicked()</signal>
   <receiver>MainWindow</receiver>
   <slot>login()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>409</x>
     <y>283</y>
    </hint>
    <hint type="destinationlabel">
     <x>515</x>
     <y>340</y>
    </hint>
   </hints>
  </connection>
 </connections>
 <slots>
  <slot>login()</slot>
 </slots>
</ui>

Ui_test.py

# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'test.ui'
##
## Created by: Qt User Interface Compiler version 6.3.1
##
## 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, QMainWindow, QPushButton,
    QSizePolicy, QStatusBar, QTextEdit, QWidget)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        self.label.setGeometry(QRect(240, 180, 58, 16))
        self.textEdit = QTextEdit(self.centralwidget)
        self.textEdit.setObjectName(u"textEdit")
        self.textEdit.setGeometry(QRect(290, 180, 211, 21))
        self.label_2 = QLabel(self.centralwidget)
        self.label_2.setObjectName(u"label_2")
        self.label_2.setGeometry(QRect(240, 220, 31, 16))
        self.textEdit_2 = QTextEdit(self.centralwidget)
        self.textEdit_2.setObjectName(u"textEdit_2")
        self.textEdit_2.setGeometry(QRect(293, 220, 211, 21))
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(330, 270, 100, 32))
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(MainWindow.login)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.label.setText(QCoreApplication.translate("MainWindow", u"\u7528\u6237\u540d:", None))
        self.label_2.setText(QCoreApplication.translate("MainWindow", u"\u5bc6\u7801\uff1a", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"login", None))
    # retranslateUi


  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyQt6和PySide6中,可以使用QPixmap类来显示网络图片。具体步骤如下: 1. 导入必要的模块 ```python from PyQt6.QtCore import QUrl from PyQt6.QtGui import QPixmap from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt6.QtWidgets import QApplication, QLabel, QMainWindow ``` 2. 创建QNetworkAccessManager对象 ```python manager = QNetworkAccessManager() ``` 3. 发送网络请求并接收响应 ```python url = QUrl("https://example.com/image.jpg") request = QNetworkRequest(url) reply = manager.get(request) ``` 4. 在响应结束时接收数据并显示图片 ```python def on_reply_finished(reply): data = reply.readAll() pixmap = QPixmap() pixmap.loadFromData(data) label.setPixmap(pixmap) reply.finished.connect(on_reply_finished) ``` 完整代码示例: ```python from PyQt6.QtCore import QUrl from PyQt6.QtGui import QPixmap from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt6.QtWidgets import QApplication, QLabel, QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() self.label = QLabel(self) self.setCentralWidget(self.label) url = QUrl("https://example.com/image.jpg") request = QNetworkRequest(url) manager = QNetworkAccessManager() reply = manager.get(request) reply.finished.connect(self.on_reply_finished) def on_reply_finished(self, reply): data = reply.readAll() pixmap = QPixmap() pixmap.loadFromData(data) self.label.setPixmap(pixmap) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec() ``` 运行该程序,即可显示网络图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值