(수업내용 : [파일] 메뉴 아래에 [열기]와 [종료] 하위 메뉴가 있는 코드를 실제로 작성해 보자. 먼저 메뉴의 겉모양만 생성한다from tkinter import
window = Tk()
mainMenu = Menu(window) # 메인메뉴 변수에 Menu설정(윈도우창생성)
window.config(menu = mainMenu)
fileMenu = Menu(mainMenu)
mainMenu.add_cascade(label = "파일", menu = fileMenu)
fileMenu.add_command(label = "열기")
fileMenu.add_separator()
fileMenu.add_command(label = "종료")
window.mainloop()
먼저 Menu(부모윈도우)로 mainMenu 변수를 생성한다. mainMenu는 메뉴자체를 나타내는 변수이다. 그리고 생성한 메뉴 자체를 윈도창의 메뉴로 지정한다. 상위 메뉴인 [파일]을 생성하고, 메뉴 자체에 부착한다. [파일]
메뉴는 선택하고 끝나는 것이 아니라, 그 아래에 다른 메뉴가 확장되어야 하므로 add_cascade() 함수를 사용한다.
[파일] 메뉴의 하위에 [열기] 메뉴를 준비한다. [열기] 메뉴는 선택할 때 어떤 작동을 해야 하므로, add command()
함수를 사용한다. 메뉴 사이에 구분선을 넣고, 같은 방식으로 하위 메뉴를 생성한다. 메뉴의 겉모양만 있을 뿐 선
택해도 작동은 하지 않는다.
from tkinter import *
from tkinter import messagebox
# 함수 선언 부분 #
def func_open() :
messagebox.showinfo("메뉴선택", "열기 메뉴를 선택함")
def func_exit():
window.quit()
window.destroy()
# 메인 코드 부분
window = Tk()
mainMenu = Menu(window)
window.config(menu = mainMenu)
fileMenu = Menu(mainMenu))
mainMenu.add_cascade(label = "파일", menu = fileMenu)
fileMenu.add_command(label = "열기", command = func_open)
fileMenu.add_separator()
fileMenu.add_command(label = "종료", command = func_exit)
window.mainloop()) [열기] 메뉴를 선텍하면 무언가 작동을 해야 하므로
add_command() 함수를 사용한다. 그리고 선택할 때
실행될 함수명을 command값으로 사용한다.
즉 [파일] 메뉴를 선택하면 하위 메뉴가 확장되고,
[열기] 메뉴를 선택하면 func_open() 함수가 실행된다.
[종료] 메뉴도 같은 방식으로 하위 메뉴를 생성한다.
[열기] 메뉴를 선택하면 간단한 메시지창이 열리고,
[종료] 메뉴를 선택하면 프로그램이 종료된다.
대화상자의 생성과 사용
-
파이썬은 대화상자를 몇 개 제공한다. 기본적인 메시지창을 표시하는 messagebox.showinfo()는 앞에서 사용했었다. 이외에도
숫자나 문자를 입력받을 수 있도록 tkinter.simpledialog 모듈을 임포트한 후 askinteger() 및 askstring() 등을 사용할 수 있다.
간단한 코드로 확인해 보자.
입력창을 사용하려고 tkinter.simpledialog 모듈을 임포트한다. 그리고 레이블을 하나 준비한다. askinteger(“제목”, “내용”, 옵션)
함수로 정수를 사용자로부터 입력을 받는다. 옵션 중에 minvalue는 최솟값이고, maxvalue는 최댓값이다. 이 값을 벗어나서 입
력하면 경고창을 표시하며 입력되지 않는다.입력받은 숫자를 문자열로 변경해서 레이블에 쓴다. 실수를 입력 받으려면 askfloa
t() 함수를 사용하고, 문자열을 입력 받으려면 askstring() 함수를 사용하면 된다.파일을 열거나 저장할 때 표시하는 대화상자도
있다. tkinter.filedialog 모듈을 임포트한 후 askopenfilename()이나 asksaveasfile() 함수를 사용하면 된다.
from tkinter import
from tkinter.simpledialog import *
window = Tk()
window.geometry("400x100")
label1 = Label (window, text = "입력된 값")
label1.pack()
value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue = 1, maxvalue = 6)
label1.configure(text = str(value))
window.mainloop(()) 오늘도 좋은 강의 감사합니다. 항상 자세하게 친절한 강의 잘 듣고 있습니다. 저도 열심히 해서 강사님의 열정에 보답하겠습니다 .감사합니다. 수고많으셨습니다. 다음강의도 기대 만땅!!!!~~^^