본문 바로가기
프로그래밍언어/Python

[Python] : 메뉴와 대화상자

by 오주현 2021. 11. 3.
반응형
메뉴

프로그램을 실행시키면 좌측 상단에 파일 버튼이 생깁니다.

 

클릭하면 열기와 종료가 나타납니다.

 

점선을 누르면 이렇게 열기,종료 창이 빠져나옵니다.

 

from tkinter import *

window = Tk()

mainMenu = Menu(window)
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()

 

메뉴를 선택하면 작동하는 코드 추가

열기 버튼을 누르면 열기 메뉴를 선택했다는 알림창과 확인 버튼이 생성됩니다.

 

종료를 누르게 되면 프로그램이 종료됩니다.

 

대화 상자

프로그램을 실행시키면 주사위 숫자를 입력하는 창이 나오고 1~6 범위 내로 입력을 해 주면 입력 창이 꺼지면서 입력했던 숫자가 나타납니다.

 

주사위 범위보다 큰 숫자를 입력하면 경고 문구가 뜨게 됩니다.

from tkinter import *
from tkinter.simpledialog import *

window = Tk()
window.geometry("400x400")

label1 = Label(window, text = "입력된 값")
label1.pack()

value = askinteger("확대배수", "주사위 숫자 (1~6)을 입력하세요",
                   minvalue = 1, maxvalue = 6)

label1.configure(text = str(value))
window.mainloop()

 

파일을 열거나 저장할 때 표시하는 대화상자

프로그램을 실행하면 파일을 불러올 수 있는 창이 뜹니다.

설정해둔 .gif 파일들을 불러올 수 있고 선택을 하고 열기를 눌러줍니다.

불러온 사진의 경로가 표시됩니다.

 

from tkinter import *
from tkinter.filedialog import *

window = Tk()
window.geometry("400x400")

label1 = Label(window, text = "선택된 파일 이름")
label1.pack()

filename = askopenfilename(parent = window,
                           filetypes = (("GIF 파일", "*.gif"),
                                        ("모든 파일", "*.*")))

label1.configure(text = str(filename))
window.mainloop()

 

파일을 저장하는 대화상자는 매개변수가 약간 다르다.

프로그램을 실행하면 파일을 저장할 수 있는 창이 불러와집니다. 

 

파일을 저장하는 대화상자는 매개변수가 약간 다릅니다.

저장한 사진 정보가 표시됩니다.

 

from tkinter import *
from tkinter.filedialog import *

window = Tk()
window.geometry("400x400")

label1 = Label(window, text = "선택된 파일 이름")
label1.pack()

saveFP = asksaveasfile(parent = window, mode = "w",
                           defaultextension = ".jpg",
                           filetypes = (("JPG 파일", "*.jpg;*.jpeg"),
                                        ("모든 파일", "*.*")))

label1.configure(text = saveFP)
saveFP.close()
window.mainloop()
반응형

댓글