Files
CollectMangaInfo/UI.py
user01 32b4919b04 requirements.txt 파일 재서정
기존에 있던 파일 이름 이상한 애는 지웠다.
2024-11-26 15:13:26 +09:00

181 lines
5.1 KiB
Python

import sys
import os
import UtilPack as util
from io import BytesIO
from PyQt5.QtCore import Qt, QUrl, QSettings, QSize, QPoint, QByteArray
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QVBoxLayout, QLineEdit, QHBoxLayout, QListWidget, QListWidgetItem, QLabel, QFileDialog
from PyQt5.QtGui import QPixmap, QKeyEvent
QApplication.setAttribute(Qt.AA_ShareOpenGLContexts)
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.loadINI()
def closeEvent(self, event):
self.saveINI()
event.accept()
def initUI(self):
layout = self.MakeUI()
# 레이아웃을 윈도우에 적용
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
self.setWindowTitle('Manga Database')
self.move(10, 10)
self.show()
def loadINI(self):
settings = QSettings('MyApp', 'settings')
window_size = settings.value('window/size', '800, 600')
window_position = settings.value('window/position', '100, 100')
def saveINI(self):
settings = QSettings('MyApp', 'settings')
# 키-값 형식으로 데이터 저장
settings.setValue('window/size', "1024,768")
settings.setValue('window/position', "100,100")
def MakeUI_Left(self):
self.list_SrcPath = QListWidget()
btn_Add = QPushButton("Add", self)
btn_Add.clicked.connect(self.on_click_SrcAdd)
btn_Del = QPushButton("Del", self)
btn_Del.clicked.connect(self.on_click_SrcDel)
btn_Read = QPushButton("Read!", self)
btn_Read.clicked.connect(self.on_click_SrcRead)
layout_Btns = QHBoxLayout()
layout_Btns.addWidget(btn_Add)
layout_Btns.addWidget(btn_Del)
layout_Btns.addWidget(btn_Read)
layout_Top = QVBoxLayout()
layout_Top.addWidget(self.list_SrcPath)
layout_Top.addLayout(layout_Btns)
self.list_ArcList = QListWidget(self)
self.list_ArcList.itemSelectionChanged.connect(self.on_Item_SelChanged_listArc)
self.list_Infos = QListWidget(self)
layout = QVBoxLayout()
layout.addLayout(layout_Top)
layout.addWidget(self.list_ArcList)
layout.addWidget(self.list_Infos)
return layout
def MakeUI(self):
layout_L = self.MakeUI_Left()
# show Image in middle Layout
self.label_Image = QLabel(self)
# Load Default Image
pixmap = QPixmap("layoutImg.jpeg")
scaled_Pix = pixmap.scaledToHeight(600)
self.label_Image.setPixmap(scaled_Pix)
self.list_Items = QListWidget(self)
self.list_Items.itemSelectionChanged.connect(self.on_Item_SelChanged_Items)
# 레이아웃 설정
layout = QHBoxLayout()
layout.addLayout(layout_L)
layout.addWidget(self.label_Image)
layout.addWidget(self.list_Items)
return layout
def on_click_SrcAdd(self):
# 폴더 선택 창을 띄움
folder_path = QFileDialog.getExistingDirectory(self, '폴더 선택', '')
self.list_SrcPath.addItem(folder_path)
listFiles = util.ListContainFiles(folder_path)
for pathFile in listFiles:
filename = util.GetParentDirName(pathFile, 0)
fileExt = util.GetExtStr(filename)
if not fileExt.lower() in [".zip", ".cbz", ".webp", ".jpg", ".png", ".gif", ".jpeg"]:
continue
item = QListWidgetItem(filename)
item.setData(Qt.UserRole, pathFile)
self.list_ArcList.addItem(item)
def on_click_SrcDel(self):
items = self.list_SrcPath.selectedItems()
if not items:
return
for item in items:
row = self.list_SrcPath.row(item)
self.list_SrcPath.takeItem(row)
def on_click_SrcRead(self):
pass
def on_Item_SelChanged_listArc(self):
items = self.list_ArcList.selectedItems()
self.list_Infos.clear()
self.pathCurSelZip = ""
for item in items:
self.pathCurSelZip = item.data(Qt.UserRole)
listZipConts = util.GetZipContentList(self.pathCurSelZip)
self.list_Infos.addItem( QListWidgetItem(self.pathCurSelZip) )
self.list_Infos.addItem( QListWidgetItem( f"{len(listZipConts)}" ) )
self.list_Items.clear()
self.list_Items.addItems( listZipConts )
def on_Item_SelChanged_Items(self):
items = self.list_Items.selectedItems()
if 0 >= len(items):
return
data = util.GetZippedFileByte(self.pathCurSelZip, items[0].text())
imageIO = BytesIO(data)
pixmap = QPixmap()
pixmap.loadFromData( QByteArray( imageIO.getvalue() ) )
szLabel = self.label_Image.size()
self.label_Image.setPixmap(pixmap)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setQuitOnLastWindowClosed(True)
main_window = MyApp()
#main_window.show()
sys.exit(app.exec_())