Только я не нашёл как установить размер ячейки под изображениеfrom io import BytesIO
import requests
from PyQt5.QtWidgets import (QApplication, QMainWindow, QGridLayout,
QWidget, QTableWidget, QTableWidgetItem)
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtCore import QSize, Qt, QThread, pyqtSignal, pyqtSlot
class UploadImage(QThread):
data = pyqtSignal(bytes)
def __init__(self):
super().__init__()
@pyqtSlot()
def run(self):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2)\
AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/63.0.3239.84 Safari/537.36',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'}
url = "https://cdn.programiz.com/sites/tutorial2program/files/hello-world.jpg"
try:
content = requests.get(url, headers=headers).content
self.data.emit(content)
except requests.exceptions.ConnectionError as error:
print(error)
class MainWindow(QMainWindow):
# Переопределяем конструктор класса
def __init__(self):
# Обязательно нужно вызвать метод супер класса
super().__init__()
self.pixmap = QPixmap()
self.setMinimumSize(QSize(800, 300)) # Устанавливаем размеры
self.setWindowTitle("Загрузка изображения из интернета")# Устанавливаем заголовок окна
central_widget = QWidget(self) # Создаём центральный виджет
self.setCentralWidget(central_widget) # Устанавливаем центральный виджет
grid_layout = QGridLayout() # Создаём QGridLayout
central_widget.setLayout(grid_layout) # Устанавливаем данное размещение в центральный виджет
self.table = QTableWidget(self) # Создаём таблицу
self.table.setColumnCount(1)
self.table.setRowCount(1) # и одну строку в таблице
# Устанавливаем заголовки таблицы
self.table.setHorizontalHeaderLabels(["Изображение"])
# Устанавливаем всплывающие подсказки на заголовки
self.table.horizontalHeaderItem(0)
self.table.horizontalHeaderItem(0).setToolTip("Шутка")
# Устанавливаем выравнивание на заголовки
self.table.horizontalHeaderItem(0).setTextAlignment(Qt.AlignLeft)
# делаем ресайз колонок по содержимому
self.table.resizeColumnsToContents()
grid_layout.addWidget(self.table, 0, 0) # Добавляем таблицу в сетку
self.upload_image = UploadImage()
self.upload_image.start()
self.upload_image.data.connect(self.show_image)
def show_image(self, image_bytes):
self.bytes_io = BytesIO(image_bytes)
self.pixmap.loadFromData(self.bytes_io.getvalue())
image = QTableWidgetItem()
image.setData(Qt.DecorationRole, self.pixmap)
image.setFlags(image.flags() ^ Qt.ItemIsEditable)
self.table.setItem(0, 0, image)
self.table.resizeColumnsToContents()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec())