From 7587da53b3d5afa58e2e5f68e6f43cb0815150ff Mon Sep 17 00:00:00 2001 From: Lee Young Hoon Date: Wed, 11 Dec 2024 10:48:54 +0900 Subject: [PATCH] Update UI.py, UtilPack.py, and ui_Tki.py --- UI.py | 52 ++++++++++++++++++++++++++-------------------------- UtilPack.py | 13 ++++++++++++- ui_Tki.py | 26 ++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 ui_Tki.py diff --git a/UI.py b/UI.py index f7e6d0e..8d13ee4 100644 --- a/UI.py +++ b/UI.py @@ -129,10 +129,29 @@ class MyApp(QMainWindow): # 소스 폴더 목록에 추가 self.list_SrcPath.addItem(folder_path) + #캘리버 서재 폴더인가? + pathCalDB = os.path.join( folder_path, "metadata.db") + if True == os.path.exists(pathCalDB): + db = calDB.MgrCalibreDB(pathCalDB) + db.init() + listBooks = db.GetBookListforUI_ArcList() + for book in listBooks: + # 이름은 폴더/DB 파일이름 + FolderName = util.GetParentDirName(folder_path, 0) + item = QListWidgetItem(f"{FolderName}/{book[0]}") + + bookpath = os.path.join(folder_path, book[1]) + listfiles = util.FindFileFromExt(bookpath, "cbz") + if 0 < len(listfiles): + bookpath = os.path.join(bookpath, listfiles[0]) + + item.setData(Qt.UserRole, bookpath) + self.list_ArcList.addItem(item) + + return + # 폴더 내의 자식 폴더 목록을 가져온다. listFolders = util.ListSubDirectories(folder_path) - - # 선택한 폴더도 리스트에 추가한다. listFolders.append(folder_path) for folder in listFolders: @@ -140,8 +159,7 @@ class MyApp(QMainWindow): listFiles = util.ListContainFiles(folder) # 파일 목록을 훑어서 내용을 판단 - # 1. 압축파일이 들어있나? - # 2. 이미지 파일이 들어있나? + # 1. 압축파일이 들어있나? 2. 이미지 파일이 들어있나? isImgIn = False for pathFile in listFiles: filename = util.GetParentDirName(pathFile, 0) @@ -157,25 +175,6 @@ class MyApp(QMainWindow): item.setData(Qt.UserRole, pathFile) self.list_ArcList.addItem(item) - - # 데이터베이스 파일이 들어 있다면... - if fileExt.lower() in [".db"]: - # 이름은 폴더/DB 파일이름 - FolderName = util.GetParentDirName(pathFile, 1) - ItemName = os.path.join(FolderName, filename) - item = QListWidgetItem(ItemName) - # 전체 경로를 따로 저장 - #item.setData(Qt.UserRole, pathFile) - #self.list_ArcList.addItem(item) - print(pathFile) - db = calDB.MgrCalibreDB(pathFile) - db.init() - listBooks = db.GetBookListforUI_ArcList() - for book in listBooks: - item.setData(Qt.UserRole, book[1]) - self.list_ArcList.addItem(book[0]) - - # 이미지 파일이 들어있다면... if fileExt.lower() in [".jpg", ".webp", ".jpeg", ".png", ".gif"]: isImgIn = True @@ -187,7 +186,8 @@ class MyApp(QMainWindow): # 폴더 경로를 따로 저장 item.setData(Qt.UserRole, folder) self.list_ArcList.addItem(item) - + + return def on_click_SrcDel(self): items = self.list_SrcPath.selectedItems() @@ -215,8 +215,8 @@ class MyApp(QMainWindow): for item in items: pathTarget = item.data(Qt.UserRole) - print(f"arc : {pathTarget}") - if False == os.path.exists(pathTarget): + print(pathTarget) + if None == pathTarget or False == os.path.exists(pathTarget): return # 압축파일일 경우... diff --git a/UtilPack.py b/UtilPack.py index 5fd5a10..dfc4a06 100644 --- a/UtilPack.py +++ b/UtilPack.py @@ -13,10 +13,12 @@ from pathlib import Path m_dbgLevel = 0 listDbgStr = [] + # def IsEmptyStr(string): return 0 == len(string.strip()) + # def GetCurrentTime(): # 현재 시간을 구하고 구조체로 변환 @@ -34,6 +36,7 @@ def GetCurrentTime(): return strRet + #for debug def DbgOut(strInput, bPrint = False): strMsg = (f"{GetCurrentTime()} : {strInput}") @@ -63,6 +66,7 @@ def ListSubDirectories(root_dir): return subdirectories + # 자식 폴더를 구해온다. 직계 자식만 def ListChildDirectories(pathDir): listRet = [] @@ -73,6 +77,7 @@ def ListChildDirectories(pathDir): return listRet + # 파일목록만 구해온다. 자식 폴더에 있는건 무시. def ListContainFiles(pathDir): listRet = [] @@ -83,6 +88,7 @@ def ListContainFiles(pathDir): return listRet + def ListFileExtRcr(pathTrg, listExt): listRet= [] @@ -128,6 +134,7 @@ def IsFinalFolder(path): return bRet; + # 어떤 경로 안에서 특정 확장자의 파일을 뽑아내어 그 리스트를 반환한다. def FindFileFromExt(path, ext): bDot = False @@ -148,7 +155,8 @@ def FindFileFromExt(path, ext): listRet.append(item) return listRet - + + # 파일 이름에서 확장자를 뽑아낸다. True : '.' 을 포함한다. def GetExtStr(file_path, bDot = True): retStr = "" @@ -164,6 +172,7 @@ def GetExtStr(file_path, bDot = True): return retStr + # 문자열에 포함된 단어를 지운다. def RmvSubString(mainString, subString): # 문자열에서 부분 문자열의 인덱스를 찾습니다. @@ -176,10 +185,12 @@ def RmvSubString(mainString, subString): # 부분 문자열을 제거하고 새로운 문자열을 반환합니다. return mainString[:strIdx] + mainString[endIdx:] + def ExtractZIP(zip_file, extract_to): with zipfile.ZipFile(zip_file, 'r') as zf: zf.extractall(extract_to) + # def CreateZIP(output_zip, *files): with zipfile.ZipFile(output_zip, 'w') as zf: diff --git a/ui_Tki.py b/ui_Tki.py new file mode 100644 index 0000000..3d054d1 --- /dev/null +++ b/ui_Tki.py @@ -0,0 +1,26 @@ +import os +import sys +import tkinter as tk + +def sayhello(): + print("Hello") + +def main(argc, argv): + # 기본 창 설정 + root = tk.Tk() + root.title("Hello World App") # 창 제목 설정 + root.geometry("300x200") # 창 크기 설정 + + # 버튼 생성 + button = tk.Button(root, text="Click Me", command=sayhello) + + # 버튼을 창에 배치 + button.pack(pady=20) + + # 이벤트 루프 실행 + root.mainloop() + +if __name__ == '__main__': + argc = len(sys.argv) + argv = sys.argv + main(argc, argv) \ No newline at end of file