使用 requests
获取网络图片 需要有一个 label
控件
req = requests.get("https://xxx.png")
photo = QtGui.QPixmap()
photo.loadFromData(req.content)
self.label.setPixmap(photo)
需要引入
import requests
from PyQt6 import QtCore, QtWidgets, QtGui
from PyQt6.QtWidgets import QWidget
这样会产生阻塞 可以用异步的方法来获取
from PyQt6 import QtCore, QtWidgets, QtGui, QtNetwork
from PyQt6.QtWidgets import QWidget
class Ui_Images(QWidget):
def __init__(self):
super(Ui_Images, self).__init__()
self.setupUi(self)
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(338, 345)
self.label = QtWidgets.QLabel(parent=Form)
self.label.setGeometry(QtCore.QRect(10, 10, 311, 321))
self.label.setObjectName("label")
self.loading_label = QtWidgets.QLabel("加载中...", parent=Form)
self.loading_label.setGeometry(QtCore.QRect(10, 10, 311, 321))
self.loading_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.loading_label.setObjectName("loading_label")
self.manager = QtNetwork.QNetworkAccessManager()
self.manager.finished.connect(self.onFinished)
url = "https://xxx.jpg"
self.manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl(url)))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def onFinished(self, reply):
image_data = reply.readAll()
photo = QtGui.QPixmap()
photo.loadFromData(image_data)
self.label.setPixmap(photo)
self.loading_label.hide()
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "显示图片"))