mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect-gui.git
synced 2025-06-24 21:14:12 +08:00
57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
|
from PyQt5.QtCore import QEvent, QRect, QSize
|
||
|
from PyQt5.QtWidgets import QLabel, QPushButton, QFrame
|
||
|
from widget.embed_detail import EmbedDetail
|
||
|
|
||
|
class EmbedItem(QFrame):
|
||
|
|
||
|
def __init__(self, parent=None):
|
||
|
super(EmbedItem, self).__init__(parent)
|
||
|
|
||
|
self.rect = None
|
||
|
self.param = None
|
||
|
|
||
|
self.item_button = QPushButton(self)
|
||
|
self.item_button.clicked.connect(self.click)
|
||
|
self.item_label = QLabel(self)
|
||
|
|
||
|
def resizeEvent(self, event: QEvent):
|
||
|
super().resizeEvent(event)
|
||
|
button_size = self.item_button.size()
|
||
|
label_size = self.item_label.sizeHint()
|
||
|
self.setFixedSize(max(button_size.width(), label_size.width()), button_size.height() + label_size.height() +2)
|
||
|
widget_size = self.size()
|
||
|
if label_size.width() > button_size.width():
|
||
|
self.item_button.move((widget_size.width() - button_size.width()) / 2, 0)
|
||
|
self.item_label.move(0, button_size.height() + 2)
|
||
|
self.move(self.rect.x() - (widget_size.width() - button_size.width()) / 2, self.rect.y())
|
||
|
else:
|
||
|
self.item_label.move((widget_size.width() - label_size.width()) / 2, button_size.height() + 2)
|
||
|
self.item_button.move(0, 0)
|
||
|
self.move(self.rect.x(), self.rect.y())
|
||
|
|
||
|
def setItemParam(self, param):
|
||
|
self.param = param
|
||
|
self.rect = QRect(param["x"], param["y"], param["w"], param["h"])
|
||
|
self.item_button.setFixedSize(QSize(param["w"], param["h"]))
|
||
|
self.item_button.setObjectName(param["code"])
|
||
|
self.item_label.setText(param["code"])
|
||
|
self.item_label.move(0, self.rect.height() + 5)
|
||
|
|
||
|
def setIndex(self, index):
|
||
|
self.item_button.setText(index)
|
||
|
|
||
|
def setChecked(self):
|
||
|
self.item_button.setStyleSheet("border: 1px solid #6cff6c;")
|
||
|
|
||
|
def setError(self):
|
||
|
self.item_button.setStyleSheet("border: 1px solid #FF4444;")
|
||
|
|
||
|
def click(self):
|
||
|
if self.item_button.text() is None or self.item_button.text() == "": return
|
||
|
detail = EmbedDetail()
|
||
|
detail.setInfo(self.param)
|
||
|
relative_pos = self.item_button.pos()
|
||
|
global_pos = self.mapToGlobal(relative_pos)
|
||
|
detail.move(global_pos.x() + self.item_button.width() + 2, global_pos.y() + 2)
|
||
|
detail.exec_()
|