from PyQt5.QtWidgets import (QApplication, QMainWindow, QGridLayout, QWidget,
QTableWidget, QTableWidgetItem, QPushButton, QHeaderView)
from PyQt5.QtCore import QSize, Qt
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setMinimumSize(QSize(480, 800))
self.setWindowTitle("Работа с QTableWidget")
central_widget = QWidget()
self.setCentralWidget(central_widget)
grid_layout = QGridLayout()
central_widget.setLayout(grid_layout)
self.table = QTableWidget()
self.table.setColumnCount(4)
self.table.setRowCount(11111)
self.button = QPushButton("2000")
#self.button.move(350,170)
self.button.clicked.connect(self.close)
# Устанавливаем заголовки таблицы
self.table.setHorizontalHeaderLabels(["2000", "2000", "2000","2000"])
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
# Устанавливаем всплывающие подсказки на заголовки
self.table.horizontalHeaderItem(0).setToolTip("200")
self.table.horizontalHeaderItem(1).setToolTip("200 ")
self.table.horizontalHeaderItem(2).setToolTip("200")
# Устанавливаем выравнивание на заголовки
self.table.horizontalHeaderItem(0).setTextAlignment(Qt.AlignHCenter)
self.table.horizontalHeaderItem(1).setTextAlignment(Qt.AlignHCenter)
self.table.horizontalHeaderItem(2).setTextAlignment(Qt.AlignHCenter)
self.table.horizontalHeaderItem(2).setTextAlignment(Qt.AlignHCenter)
# заполняем первую строку
self.table.setItem(0, 0, QTableWidgetItem("2000"))
self.table.setItem(0, 1, QTableWidgetItem("2000"))
self.table.setItem(4, 2, QTableWidgetItem("2000"))
# делаем ресайз колонок по содержимому
self.table.resizeColumnsToContents()
grid_layout.addWidget(self.table, 0, 0) # Добавляем таблицу в сетку
grid_layout.addWidget(self.button, 0, 1) # +++
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec())
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())