import sys import os import shutil import UtilPack as util from PyQt5.QtCore import Qt, QSettings, QRect from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QVBoxLayout, QLineEdit, \ QHBoxLayout, QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView, QFileDialog, \ QListWidget, QListWidgetItem, QMessageBox from PyQt5.QtGui import QResizeEvent, QCloseEvent, QColor class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() self.loadINI() self.initDB() # def closeEvent(self, a0: 'QCloseEvent | None'): filenameLog = f"{util.GetCurrentTime()}_DbgLog.txt" pathDbgLog = os.path.join( self.pathLog, filenameLog) util.SaveDbgMessages(pathDbgLog) self.saveINI() super().closeEvent(a0) # def resizeEvent(self, a0: 'QResizeEvent | None'): pass # def loadINI(self): pass # def saveINI(self): pass # def initDB(self): pass # def MakeUI_Left(self): layout = QVBoxLayout() layout_top = QHBoxLayout() self.listWidget_Folders = QListWidget() self.listWidget_Folders.setFixedHeight(100) layout_Btns = QVBoxLayout() btn_FolderAdd = QPushButton("폴더 추가") btn_FolderAdd.clicked.connect(self.on_btnFolderAdd_clicked) btn_FolderDel = QPushButton("폴더 삭제") btn_FolderDel.clicked.connect(self.on_btnFolderDel_clicked) btn_FolderParss = QPushButton("폴더 파싱") btn_FolderParss.clicked.connect(self.on_btnFolderParse_clicked) layout_Btns.addWidget(btn_FolderAdd) layout_Btns.addWidget(btn_FolderDel) layout_Btns.addWidget(btn_FolderParss) layout_top.addWidget(self.listWidget_Folders) layout_top.addLayout(layout_Btns) self.tableWidget_Src = QTableWidget() self.tableWidget_Src.verticalHeader().setVisible(False) self.tableWidget_Src.setEditTriggers(QAbstractItemView.NoEditTriggers) self.tableWidget_Src.setSortingEnabled(True) self.tableWidget_Src.setColumnCount(5) self.tableWidget_Src.setHorizontalHeaderLabels(["Path", "Title", "H.ID", "Img Cnt", "Dw Cnt"]) self.tableWidget_Src.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.tableWidget_Src.horizontalHeader().sectionClicked.connect(self.on_tableWidget_Src_headerClicked) self.tableWidget_Src.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableWidget_Src.setSelectionMode(QAbstractItemView.SingleSelection) self.tableWidget_Src.itemSelectionChanged.connect(self.on_tableWidget_Src_itemSelectionChanged) layout.addLayout(layout_top) layout.addWidget(self.tableWidget_Src) return layout # def MakeUI_Center(self): layout = QVBoxLayout() btn_Emptyfolder = QPushButton("빈 폴더 이동") btn_Emptyfolder.clicked.connect(self.on_btn_Emptyfolder_clicked) btn_ChkDuplicate = QPushButton("중복 검사 및 제거") btn_ChkDuplicate.clicked.connect(self.on_btn_ChkDuplicate_clicked) btn_Archive = QPushButton("압축 및 데이터 저장") btn_Archive.clicked.connect(self.on_btn_Archive_clicked) btn_EnterCalibre = QPushButton("컬리버에 삽입") btn_EnterCalibre.clicked.connect(self.on_btn_EnterCalibre_clicked) layout.addWidget(btn_Emptyfolder) layout.addWidget(btn_ChkDuplicate) layout.addWidget(btn_Archive) layout.addWidget(btn_EnterCalibre) return layout # def MakeUI_Right(self): layout_top = QHBoxLayout() self.edit_DB = QLineEdit(self) self.edit_DB.setReadOnly(True) self.edit_DB.setText("...") btn_DB = QPushButton("...") btn_DB.setFixedWidth(50) btn_DB.clicked.connect(self.on_btnDB_clicked) layout_top.addWidget(self.edit_DB) layout_top.addWidget(btn_DB) self.tableWidget_DB = QTableWidget() self.tableWidget_DB.verticalHeader().setVisible(False) self.tableWidget_DB.setColumnCount(5) self.tableWidget_DB.setHorizontalHeaderLabels(["Title", "Author", "Cover", "Exts", "ID"]) self.tableWidget_DB.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.tableWidget_DB.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableWidget_DB.setSelectionMode(QAbstractItemView.SingleSelection) self.tableWidget_DB.itemSelectionChanged.connect(self.on_tableWidget_DB_itemSelectionChanged) layout = QVBoxLayout() layout.addLayout(layout_top) layout.addWidget(self.tableWidget_DB) return layout # def MakeUI(self): layout_L = self.MakeUI_Left() layout_C = self.MakeUI_Center() layout_R = self.MakeUI_Right() # 레이아웃 설정 layout = QHBoxLayout() layout.addLayout(layout_L, stretch = 10) layout.addLayout(layout_C, stretch = 1) layout.addLayout(layout_R, stretch = 10) return layout # def initUI(self): layout = self.MakeUI() # 레이아웃을 윈도우에 적용 central_widget = QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) self.setWindowTitle('Manga Database') self.resize(800, 600) self.show() # 테이블의 특정 행에 배경색을 설정한다 # nRow: 배경색을 설정할 행 번호, color: 배경색 (Qt.GlobalColor) def SrcTableRowBgColor(self, nRow:int, color:Qt.GlobalColor) -> None: for col in range(self.tableWidget_Src.columnCount()): item = self.tableWidget_Src.item(nRow, col) if item: item.setBackground(Qt.GlobalColor(color))