| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- import os
- from import_qt_mode import *
- from UI.manual_image_matching.manual_image_matching_main import Ui_Form
- from module.view_control.manual_image_matching.m_image_matching_data import MatchingData
- from module.view_control.manual_image_matching.goods_art_image_list import GoodsArtImageList
- from module.view_control.MineQWidget import MineQWidget, LoadingMask
- class MainMatchingWindow(MineQWidget, QWidget):
- mask_load_sign = Signal(bool)
- def __init__(self, root_path=None):
- super().__init__()
- self.ui = Ui_Form()
- self.ui.setupUi(self)
- # 安装事件过滤器
- self.installEventFilter(self)
- self.ui.splitter.setSizes([900, 450])
- # 移除 Qt.WindowStaysOnTopHint 标志以取消置顶
- self.setWindowFlags(self.windowFlags() & ~Qt.WindowStaysOnTopHint)
- # 默认最大化显示窗口
- self.showMaximized()
- self.matching_data = MatchingData()
- if not root_path:
- # root_path = r"D:\phpstudy_pro\WWW\auto_photo\output\2024-11-18"
- root_path = r"D:\MyDocuments\PythonCode\MyPython\red_dragonfly\deal_pics\auto_capture_V2\auto_photo\output\2024-12-20-2 - 副本"
- self.root_path = root_path
- print(self.size())
- # 加载图片
- self.state = 0
- self.__mask = LoadingMask(self)
- self.mask_load_sign.connect(self.mask_load)
- self.installEventFilter(self.__mask)
- self.__mask.is_end_sign.connect(self.hide_mask)
- QTimer.singleShot(1000, self.load_images)
- self.ui.select_path.clicked.connect(self.selectPath)
- self.show()
- def mask_load(self, flag):
- print("mask_load")
- if flag:
- self.__mask.show()
- else:
- self.__mask.close()
- def load_images(self):
- self.show_all_goods_list(self.root_path)
- def show_all_goods_list(self, root_path):
- # for i in self.ui.action_widget_list.findChildren(GoodsArtImageList):
- # i.deleteLater()
- self.mask_load_sign.emit(True)
- for data in self.matching_data.get_all_folder(root_path):
- # folder_name = data["folder_name"]
- # original_path = data["original_path"]
- # cut_out_path = data["cut_out_path"]
- goods_art_image_list = GoodsArtImageList(goods_art_no_folder_path=data["goods_art_no_folder_path"],
- parent=self.ui.action_widget_list,
- windows=self,
- label_color = data["label_color"],
- )
- self.ui.verticalLayout_4.insertWidget(self.ui.verticalLayout_4.count() - 1, goods_art_image_list)
- goods_art_image_list.select_clearn_all_sign.connect(self.clearn_all_label_select)
- self.mask_load_sign.emit(False)
- # 清除所有已选
- def clearn_all_label_select(self, original_path):
- for goods_art_image_list_item in self.ui.action_widget_list.findChildren(GoodsArtImageList):
- goods_art_image_list_item: GoodsArtImageList
- if goods_art_image_list_item.original_path != original_path:
- if goods_art_image_list_item.has_selected:
- goods_art_image_list_item.clearn_all_label_select()
- goods_art_image_list_item.has_selected = False
- for goods_art_image_list_item in self.ui.action_widget_list_2.findChildren(GoodsArtImageList):
- goods_art_image_list_item: GoodsArtImageList
- if goods_art_image_list_item.original_path != original_path:
- if goods_art_image_list_item.has_selected:
- goods_art_image_list_item.clearn_all_label_select()
- goods_art_image_list_item.has_selected = False
- def selectPath(self):
- # a = QMessageBox.question(
- # self,
- # "继续",
- # "如选择的文件夹图片很多,则此处会非常耗时",
- # QMessageBox.Yes | QMessageBox.No,
- # )
- # if a != QMessageBox.Yes:
- # return
- path = QFileDialog.getExistingDirectory(self, "选择文件夹", "")
- if not path:
- return
- if os.path.isfile(path):
- return
- _, folder_name = os.path.split(path)
- for widget in self.ui.action_widget_list_2.findChildren(GoodsArtImageList):
- widget.deleteLater()
- self.mask_load_sign.emit(True)
- goods_art_image_list = GoodsArtImageList(goods_art_no_folder_path=path,
- parent=self.ui.action_widget_list_2,
- is_goods_art_no_folder=False,
- )
- goods_art_image_list.select_clearn_all_sign.connect(self.clearn_all_label_select)
- self.ui.verticalLayout_5.insertWidget(self.ui.verticalLayout_5.count() - 1, goods_art_image_list)
- self.mask_load_sign.emit(False)
- def show_big_image(self, icon):
- icon = icon.scaled(self.ui.show_big_image.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
- self.ui.show_big_image.setPixmap(icon)
- def eventFilter(self, obj, event):
- if obj == self and event.type() == QEvent.WindowStateChange:
- if self.isMaximized():
- print("检测到窗口最大化")
- QTimer.singleShot(1000, self.show_again)
- return super().eventFilter(obj, event)
- def show_again(self, *args):
- print("检测到窗口最大化2")
- print(self.size())
- self.updateGeometry()
- # self.resizeEvent(QResizeEvent(self.size(), QSize()))
- # self.adjustSize()
- self.ui.action_widget_list.updateGeometry()
- print(self.size())
- for i in self.ui.action_widget_list.findChildren(GoodsArtImageList):
- i.repaint()
- for i in self.ui.action_widget_list_2.findChildren(GoodsArtImageList):
- i.repaint()
- def resizeEvent(self, event):
- super().resizeEvent(event)
- if __name__ == '__main__':
- app = QApplication([])
- window = MainMatchingWindow()
- window.resize(1000, 800)
- window.show()
- app.exec()
|