main_run.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. plugins_name = "主图生成与上传"
  2. from UI.auto_deal_pics_ui.show_process import Ui_Form as show_process_Ui_Form
  3. from UI.auto_deal_pics_ui.auto_deal_pics_ui import Ui_Form as MainUi
  4. from UI.auto_deal_pics_ui.matching_photos import Ui_Form as matching_photos_Ui_Form
  5. from functools import partial
  6. from module.view_control.MineQWidget import MineQWidget, DialogShow
  7. from module.view_control.generate_main_image.grenerate_main_image_test import GeneratePic
  8. from module.view_control.matching_photos.data import DataModeMatchPhoto
  9. from collections import defaultdict
  10. import settings
  11. from module.view_control.generate_goods_no_detail_pic import detail_func
  12. import json
  13. from module.base_mode.base import *
  14. from import_qt_mode import *
  15. import threading
  16. import concurrent.futures
  17. from module.view_control.generate_goods_no_detail_pic.data import DataModeGenerateDetail, DataModeUploadPic
  18. from module.view_control.generate_goods_no_detail_pic.detail_func import create_folder
  19. import time
  20. from PIL import Image
  21. from io import BytesIO
  22. import os, re
  23. from func_timeout import FunctionTimedOut
  24. is_test_plugins = False
  25. try:
  26. is_test_plugins = settings.is_test_plugins
  27. except:
  28. is_test_plugins = False
  29. if is_test_plugins:
  30. from custom_plugins.plugins_mode.plugins_base_func import *
  31. else:
  32. from plugins_mode.plugins_base_func import *
  33. _Type = ['.png', '.PNG', '.jpg', '.JPG', '.gif', '.GIF', ".jpge", ".JPGE"]
  34. # 主程序入口
  35. class AutoDealPics1(MineQWidget):
  36. def __init__(self, windows=None):
  37. super().__init__()
  38. self.windows = windows
  39. self.ui = MainUi()
  40. self.ui.setupUi(self)
  41. self.setWindowTitle("图片处理(插件)")
  42. self.resize(618, 651)
  43. # 线程锁
  44. self.lock = Lock()
  45. self.init()
  46. self.show()
  47. def init(self):
  48. self.show_process = ShowProcess(self)
  49. self.ui.main_stackedWidget.addWidget(self.show_process)
  50. self.show_process.back_sign.connect(self.to_back)
  51. self.show_process.stop_sign.connect(self.to_stop)
  52. # 匹配图片页面
  53. self.show_matching_pic = MatchingPhotos(self)
  54. self.ui.main_stackedWidget.addWidget(self.show_matching_pic)
  55. # 抠图与生成详情页
  56. self.show_generate_detail_pic = GenerateDetailPic(self, top_windows=self.windows)
  57. self.ui.main_stackedWidget.addWidget(self.show_generate_detail_pic)
  58. self.show_generate_detail_pic.text_show.connect(self.show_progress_detail)
  59. self.show_generate_detail_pic.progress_show_sign.connect(self.switch_to_process_ui)
  60. self.show_generate_detail_pic.progress_end_sign.connect(self.end_process)
  61. # 开始抠图生成主图处理
  62. self.show_matching_pic.run_cutout_sign.connect(self.switch_to_detail_ui)
  63. self.ui.main_stackedWidget.setCurrentIndex(1)
  64. def to_back(self, *args):
  65. self.switch_to_detail_ui()
  66. def to_stop(self):
  67. self.show_generate_detail_pic.to_stop()
  68. def switch_to_process_ui(self, flag):
  69. if flag:
  70. self.show_process.clearn()
  71. self.ui.main_stackedWidget.setCurrentIndex(0)
  72. else:
  73. self.ui.main_stackedWidget.setCurrentIndex(2)
  74. def end_process(self, *args):
  75. self.show_process.is_end()
  76. def show_progress_detail(self, text):
  77. self.show_process.show_progress_detail(text)
  78. # 页面切换到详情页生成的窗口
  79. def switch_to_detail_ui(self, data=None):
  80. if data:
  81. folder_path = data["folder_path"]
  82. self.show_generate_detail_pic.change_img_dir_by_text(folder_path)
  83. self.ui.main_stackedWidget.setCurrentIndex(2)
  84. class ShowProcess(QWidget):
  85. back_sign = Signal()
  86. stop_sign = Signal()
  87. def __init__(self, parent=None, windows=None):
  88. super().__init__(parent)
  89. self.windows = windows
  90. self.ui = show_process_Ui_Form()
  91. self.ui.setupUi(self)
  92. self.ui.back.clicked.connect(self.back_sign.emit)
  93. self.ui.stop.clicked.connect(self.stop_sign.emit)
  94. self.ui.progressBar.hide()
  95. self.show()
  96. def show_progress_detail(self, text):
  97. self.ui.textBrowser_4.append(text)
  98. def is_end(self):
  99. self.ui.back.show()
  100. self.ui.stop.hide()
  101. def clearn(self):
  102. self.ui.progressBar.setValue(0)
  103. self.ui.textBrowser_4.clear()
  104. self.ui.back.hide()
  105. self.ui.stop.show()