파이썬(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
반응형