baidu_web/productCard.py

106 lines
3.6 KiB
Python

from PySide6.QtWidgets import QWidget, QVBoxLayout, QGridLayout, QLabel
from PySide6.QtGui import QPixmap
from PySide6.QtCore import Qt
import requests
class ProductCard(QWidget):
def __init__(self):
super().__init__()
# self.setFixedSize(800, 300)
# 외부 위젯으로 감싸서 테두리 적용
container_widget = QWidget(self)
container_widget.setFixedSize(600,400)
container_layout = QVBoxLayout(container_widget)
self.layout = QGridLayout()
# 테두리 스타일 적용
container_widget.setStyleSheet("border: 2px solid black;")
# UI 요소 초기화
self.info1_label = QLabel('검색 상품')
self.info1_label.setAlignment(Qt.AlignCenter)
self.info1_label.setStyleSheet("font-weight: bold; font-size: 16px;")
self.info2_label = QLabel('상품 정보')
self.info2_label.setAlignment(Qt.AlignCenter)
self.info2_label.setStyleSheet("font-weight: bold; font-size: 16px;")
self.image_label = QLabel()
# self.image_label.setFixedWidth(250)
self.image_label.setFixedSize(200, 250)
self.name_label = QLabel("상품명:")
self.name_value = QLabel("")
self.price_label = QLabel("가격:")
self.price_value = QLabel("")
self.tag_label = QLabel("태그:")
self.tag_value = QLabel("")
self.cat_label = QLabel("카테고리:")
self.cat_value = QLabel("")
# 그리드 레이아웃 구성
self.layout.addWidget(self.info1_label, 0, 0, 1, 1)
self.layout.addWidget(self.info2_label, 0, 1, 1, 4)
self.layout.addWidget(self.image_label, 1, 0, 3, 1)
# 각 정보 라벨과 값 배치
self.layout.addWidget(self.name_label, 1, 2, 1, 1)
self.layout.addWidget(self.name_value, 1, 3, 1, 1)
self.layout.addWidget(self.price_label, 2, 2, 1, 1)
self.layout.addWidget(self.price_value, 2, 3, 1, 1)
self.layout.addWidget(self.tag_label, 3, 2, 1, 1)
self.layout.addWidget(self.tag_value, 3, 3, 1, 1)
self.layout.addWidget(self.cat_label, 4, 2, 1, 1)
self.layout.addWidget(self.cat_value, 4, 3, 1, 1)
container_layout.addLayout(self.layout)
def reset(self):
"""카드의 데이터를 초기화합니다."""
self.name_value.setText("")
self.price_value.setText("")
self.tag_value.setText("")
self.cat_value.setText("")
self.image_label.clear()
def set_data(self, name, price, tag, cat, product_img_path):
"""카드에 상품 데이터를 설정합니다."""
self.name_value.setText(name)
# self.price_value.setText(str(price))
self.price_value.setText(f"{price:,}")
self.tag_value.setText(tag)
self.cat_value.setText(cat)
# self.price_value.setText(str(price))
pixmap = QPixmap(product_img_path)
self.image_label.setPixmap(pixmap.scaled(self.image_label.size(), Qt.KeepAspectRatio))
# # 이미지 설정
# pixmap = QPixmap()
# img_data = self.download_image_data(img_url)
# if img_data:
# pixmap.loadFromData(img_data)
# self.image_label.setPixmap(pixmap.scaled(self.image_label.size(), Qt.KeepAspectRatio))
# else:
# self.image_label.clear()
def download_image_data(self, img_url):
"""이미지 URL에서 데이터를 다운로드합니다."""
try:
response = requests.get(img_url)
if response.status_code == 200:
return response.content
except Exception as e:
print(f"Image download error: {e}")
return None