파이썬(Python)

[ CustomTkinter ] Customtkinter 메뉴 만들기

카루루1007 2024. 11. 13. 14:06
728x90
반응형

CustomTkinter 라이브러리를 사용하여

메뉴바를 만드는 방법을 간단하게 알아보겠습니다.

 

 준비사항

 

CustomTkinter에서 기본적으로 지원하지 않으므로,

CTkMenuBar 라이브러리를 설치해 줍니다.

pip install CTkMenuBar

 

 메뉴 위치

 

메뉴 위치는 두 곳에 가능합니다.

타이틀 바 아래에 만드는 방법타이틀 바에 직접 만드는 방법입니다.

 

개인적으로는 타이틀 바 아래에 만드는 것을 선호합니다.

 

반응형

 메뉴 만들기

 

먼저 간단하게 메인 윈도우를 만들어 줍니다.

import customtkinter as ctk

root = ctk.CTk()
root.geometry("400x300")

root.mainloop()

 

그다음 메뉴 바를 생성하고 메뉴 버튼을 추가합니다.

CTkMenuBar() 각체를 생성하고

add_cascadde() 함수를 사용해 메뉴 버튼을 추가합니다.

import customtkinter as ctk
from CTkMenuBar import *

root = ctk.CTk()
root.geometry("400x300")

menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("파일")
help_button = menu_bar.add_cascade("도움말")

root.mainloop()

 

이렇게 메뉴 버튼을 만들면, 

그다음 하위 메뉴를 생성해 주어야 합니다.

import customtkinter as ctk
from CTkMenuBar import *

root = ctk.CTk()
root.geometry("400x300")

menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("파일")
help_button = menu_bar.add_cascade("도움말")

file_dropdown = CustomDropdownMenu(file_button)
file_dropdown.add_option("새로 만들기")
file_dropdown.add_option("열기")
file_dropdown.add_option("종료")

root.mainloop()

 

CustomDropdownMenu()의 클래스에 

기존에 만든 file_button을 전달하여 하위 메뉴 객체를 생성합니다.

그다음 add_option() 함수로 하위 메뉴를 추가해 줍니다.

 

하위 메뉴를 구분하려면 

add_separator() 함수를 사용하면 됩니다.

import customtkinter as ctk
from CTkMenuBar import *

root = ctk.CTk()
root.geometry("400x300")

menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("파일")
help_button = menu_bar.add_cascade("도움말")

file_dropdown = CustomDropdownMenu(file_button)
file_dropdown.add_option("새로 만들기")
file_dropdown.add_option("열기")
file_dropdown.add_separator()
file_dropdown.add_option("종료")

root.mainloop()

 

한 단계 더 아래의 하위 메뉴를 추가하려면 

하위 메뉴를 추가할 때 add_option() 함수가 아닌,

add_submenu() 함수를 사용합니다.

import customtkinter as ctk
from CTkMenuBar import *

root = ctk.CTk()
root.geometry("400x300")

menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("파일")
help_button = menu_bar.add_cascade("도움말")

file_dropdown = CustomDropdownMenu(file_button)
file_dropdown.add_option("새로 만들기")
file_dropdown.add_option("열기")

save_submenu = file_dropdown.add_submenu("저장하기")
save_submenu.add_option("파일 저장")
save_submenu.add_option("다른 이름으로 저장")

file_dropdown.add_separator()
file_dropdown.add_option("종료")

root.mainloop()

 

728x90

조금만 수정하면 더 아래의 하위 메뉴도 생성이 가능합니다.

import customtkinter as ctk
from CTkMenuBar import *

root = ctk.CTk()
root.geometry("400x300")

menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("파일")
help_button = menu_bar.add_cascade("도움말")

file_dropdown = CustomDropdownMenu(file_button)
file_dropdown.add_option("새로 만들기")
file_dropdown.add_option("열기")

save_submenu = file_dropdown.add_submenu("저장하기")
save_submenu.add_option("파일 저장")
save_as = save_submenu.add_submenu("다른 이름으로 저장")
save_as.add_option("아주 다른 이름으로 저장")
save_as.add_option("더 많이 다른 이름으로 저장")

file_dropdown.add_separator()
file_dropdown.add_option("종료")

root.mainloop()

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형