[Code] 메뉴 구성 추가

This commit is contained in:
3minbe 2025-01-04 00:37:33 +09:00
parent 3930d0a7c4
commit b39f9bc6d4

View File

@ -15,6 +15,51 @@ class MainView(tk.Tk):
self.title("DBC to C Converter")
self.geometry("800x600")
# 메뉴바 추가
self.menu_bar = tk.Menu(self)
self.config(menu=self.menu_bar)
file_menu = tk.Menu(self.menu_bar, tearoff=0)
edit_menu = tk.Menu(self.menu_bar, tearoff=0)
view_menu = tk.Menu(self.menu_bar, tearoff=0)
tools_menu = tk.Menu(self.menu_bar, tearoff=0)
self.menu_bar.add_cascade(label="파일", menu=file_menu)
self.menu_bar.add_cascade(label="편집", menu=edit_menu)
self.menu_bar.add_cascade(label="보기", menu=view_menu)
self.menu_bar.add_cascade(label="도구", menu=tools_menu)
# 파일 메뉴 항목 추가
file_menu.add_command(label="파일 추가", command=self.FilesOpen)
file_menu.add_command(label="선택 파일 삭제", command=self.deleteSelectedFiles)
file_menu.add_command(label="모든 파일 삭제", command=self.deleteAllFiles)
# 편집 메뉴 항목 추가
edit_menu.add_command(label="모두 선택", command=self.selectAllFiles)
edit_menu.add_command(label="선택 반전", command=self.invertSelection)
# 보기 메뉴 항목 추가
size_menu = tk.Menu(view_menu, tearoff=0)
size_menu.add_command(label="작게", command=lambda: self.setWindowSize("small"))
size_menu.add_command(label="보통", command=lambda: self.setWindowSize("medium"))
size_menu.add_command(label="크게", command=lambda: self.setWindowSize("large"))
size_menu.add_command(label="자동", command=lambda: self.setWindowSize("auto"))
sort_menu = tk.Menu(view_menu, tearoff=0)
sort_menu.add_command(label="파일명 오름차순", command=lambda: self.sortTreeView('파일명', False))
sort_menu.add_command(label="파일명 내림차순", command=lambda: self.sortTreeView('파일명', True))
sort_menu.add_command(label="파일경로 오름차순", command=lambda: self.sortTreeView('파일경로', False))
sort_menu.add_command(label="파일경로 내림차순", command=lambda: self.sortTreeView('파일경로', True))
sort_menu.add_command(label="파일크기 오름차순", command=lambda: self.sortTreeView('파일크기', False))
sort_menu.add_command(label="파일크기 내림차순", command=lambda: self.sortTreeView('파일크기', True))
view_menu.add_cascade(label="창크기", menu=size_menu)
view_menu.add_cascade(label="정렬", menu=sort_menu)
# 도구 메뉴 항목 추가
tools_menu.add_command(label="설정", command=self.openSettings)
tools_menu.add_command(label="프로그램 정보", command=self.openAbout)
self.tree = ttk.Treeview(self, columns=('파일명', '파일경로', '파일크기'), show='headings')
self.tree.heading('파일명', text='파일명', command=lambda: self.sortTreeView('파일명', False))
self.tree.heading('파일경로', text='파일경로', command=lambda: self.sortTreeView('파일경로', False))
@ -201,6 +246,51 @@ class MainView(tk.Tk):
else:
self.tree.heading(col_name, text=col_name, command=lambda _col=col_name: self.sortTreeView(_col, False))
def selectAllFiles(self):
for item in self.tree.get_children():
self.tree.selection_add(item)
def invertSelection(self):
selected_items = set(self.tree.selection())
all_items = set(self.tree.get_children())
new_selection = all_items - selected_items
self.tree.selection_set(new_selection)
def setWindowSize(self, size):
if size == "small":
self.geometry("600x400")
elif size == "medium":
self.geometry("800x600")
elif size == "large":
self.geometry("1000x800")
elif size == "auto":
self.geometry("")
def zoomIn(self):
current_font_size = self.tree.cget("font").split()[1]
new_font_size = int(current_font_size) + 2
self.tree.config(font=("TkDefaultFont", new_font_size))
def zoomOut(self):
current_font_size = self.tree.cget("font").split()[1]
new_font_size = int(current_font_size) - 2
self.tree.config(font=("TkDefaultFont", new_font_size))
def resetZoom(self):
self.tree.config(font=("TkDefaultFont", 10))
def openSettings(self):
settings_window = tk.Toplevel(self)
settings_window.title("설정")
settings_window.geometry("400x300")
tk.Label(settings_window, text="설정 창입니다.").pack(pady=20)
def openAbout(self):
about_window = tk.Toplevel(self)
about_window.title("프로그램 정보")
about_window.geometry("400x300")
tk.Label(about_window, text="프로그램 정보 창입니다.").pack(pady=20)
if __name__ == '__main__':
app = MainView()
app.mainloop()