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
반응형
'파이썬(Python)' 카테고리의 다른 글
[ Customtkinter ] pack() 메서드 가이드, 간단한 위젯 배치(Tkinter pack()) (2) | 2024.11.15 |
---|---|
[ 자작 프로그램 ] 엑셀 파일의 시트 합치기 프로그램 (3) | 2024.11.14 |
[ PANDAS ] 판다스(PANDAS) read_excel() 함수 총괄 정리 (0) | 2024.11.12 |
[ Tkinter, ttk, CustomTkinter ] 각 라이브러리 위젯 비교 및 지원 여부 (1) | 2024.11.10 |
[ Selenium ] 크롬 브라우저 실행 시 내 정보를 유지한 채로 브라우저 띄우기 (3) | 2024.11.06 |