*Self Study는 공식홈페이지 자료실에 답이 나와있기 때문에 이번 글부터 따로 개시 하지 않겠습니다. 

 

연습문제

1. 다음 그림과 같은 윈도창이 나오는 코드입니다. 빈 부분을 보기에서 고르세요.

input, resizable, button, size, geometry, mainloop, title, pack, print, view
from tkinter import *

window = Tk()
window.[     ①     ]("연습 문제")
window.[     ②     ]("400x100")
window.[     ③     ](width = FALSE, height = FALSE)

label1 = Label(window, text = "COOKBOOK~~ Python을 학습중…", font = ("궁서체", 15), fg = "red")
label1.[     ④     ]();

window.[     ⑤     ]()

 

더보기

답 : ① title, ② geometry, ③ resizable, ④ pack, ⑤ mainloop

 

2. 다음은 버튼을 누르면 작동하는 코드입니다. 코드의 빈 부분에 들어갈 것을 고르세요.

*2번과 4번 항목 오탈자

from tkinter import *
from tkinter import messagebox

def click_button() :
	messagebox.showinfo("버튼", "버튼을 눌렀어요.")

window = Tk()
button1 = Button(window, text = "여기를 클릭", [          ])
button1.pack();

window.mainloop()

① command = click_button( )

② execute = click_button( )

command = click_button

execute = click_button( )

 

더보기

답 : 3번

 

3. 다음은 라디오 버튼 중 어떤 것을 클릭했는지 알려주는 코드입니다. 빈 부분에 들어갈 내용을 채우세요.

from tkinter import *
window = Tk()

def rdo_change() :
	if [     ①     ] == 1 :
		label1.configure(text = "벤츠")
	else :
		label1.configure(text = "포르쉐")
        
var = [     ②     ]
rdo1 = Radiobutton(window, text = "벤츠", variable = [     ③     ], value = 1, 이후 생략…)
rdo2 = Radiobutton(window, text = "포르쉐", variable = [     ③     ], value = 2, 이후 생략…)
label1 = Label(window, text = "선택한 차량", fg = "red")

rdo1.pack()
rdo2.pack()
label1.pack()

window.mainloop()

 

더보기

답 : ① var.get(), ② IntVar(), ③ var

 

4. 코드를 실행하면 다음 각 항에 해당하는 결과가 나오기 위해서 빈 곳에 무엇을 채워야 할지 쓰세요. (빈 칸 3곳이 모두 동일한 내용임)

from tkinter import *
window = Tk()

button1 = Button(window, text = "버튼1")
button2 = Button(window, text = "버튼2")
button3 = Button(window, text = "버튼3")

button1.pack(side = [          ])
button2.pack(side = [          ])
button3.pack(side = [          ])

window.mainloop()

(1)

(2)

(3)

(4)

더보기

답 : (1) LEFT, (2) RIGHT, (3) TOP, (4) BOTTOM

 

5. 다음은 <이전>, <다음> 버튼을 클릭하면 배열(9개 문자열)의 내용으로 글자가 바뀌는 코드입니다. 빈 부분을 채우세요. 단, 마지막 글자에서 <다음>을 클릭하면 다시 첫 번째 글자가, 첫 번째 글자에서 <이전>을 클릭하면 마지막 글자가 나오도록 하세요.

from tkinter import *
from time import *

fnameList = ["jeju1.gif", "jeju2.gif", "jeju3.gif", "jeju4.gif", "jeju5.gif", "jeju6.gif", "jeju7.gif", "jeju8.gif", "jeju9.gif"]
num = 0

def clickNext() :
    global num
         
         ①     
         
    pLabel.configure(text = fnameList[num])
    
def clickPrev() :
    global num
    
         ①
         
    pLabel.configure(text = fnameList[num])
    
window = Tk()
window.geometry("700x100")
btnPrev = Button(window, text = "<< 이전", command = clickPrev)
btnNext = Button(window, text = "다음 >>", command = clickNext)
pLabel = Label(window, text = "파일명", font = ("궁서체", 20), fg = "blue")
btnPrev.place(x = 150, y = 10)
btnNext.place(x = 500, y = 10)
pLabel.place(x = 300, y = 10)
window.mainloop()

 

더보기

답 :

num += 1
ifnum > 8 :
	num = 0
num -= 1
if num > 0 :
	num = 8

 

6. 다음은 마우스 이벤트 코드와 설명의 짝입니다. 거리가 먼 것을 모두 고르세요.

① <Button> : 모든 버튼의 공통 클릭할 때

<Button-2> : 오른쪽 버튼을 클릭할 때

<ButtonRelease-1> : 왼쪽 버튼을 떼었을 때

<ButtonDouble-1> : 왼쪽 버튼을 더블클릭할 때

<ButtonDrag-1> : 왼쪽 버튼을 드래그할 때

<Enter> : 위젯 위로 마우스 커서가 올라갈 때

 

더보기

답 : 2, 4, 5

해설 : 2번 가운데 버튼을 클릭할 때, 4번 <Double-Button-1>, 5번 <B1-Motion>

 

7. 다음은 마우스를 클릭하면 마우스의 클릭한 좌표가 메시지창으로 나오는 코드입니다. 빈 부분에 들어갈 코드를 고르세요.

 

from tkinter import *

def clickMouse(event) :
	


window = Tk()
window.geometry("400x400")
label1 = Label(window, text = "이곳이 바뀜")
window.bind("<Button>", clickMouse)
label1.pack(expand = 1, anchor = CENTER)
window.mainloop()

① txt = str(event.y) + "," + str(event.x) + "에서 클릭됨"
    window.configure(text = txt)

txt = str(mouse.y) + "," + str(mouse.x) + "에서 클릭됨"
    label1.configure(text = txt)

txt = str(event.y) + "," + str(event.x) + "에서 클릭됨"
    label1.configure(text = txt)

txt = str(event.y) + "," + str(event.x) + "에서 클릭됨"
    label1.chage(text = txt)

 

더보기

답 : 3

 

8. 다음 중 키보드 이벤트의 키가 아닌 것을 하나 고르세요.

① <Enter>

② <BackSpace>

③ <Tab>

④ <Shift_L>

<Escape>

<End>

 

더보기

답 : 1

 

9. 그림과 같은 메뉴가 나오도록 코드의 빈 부분을 채우세요.

from tkinter import *
window = Tk()
totalMenu = Menu(window)
window.config(menu = totalMenu)
upMenu = Menu(totalMenu)



window.mainloop()

 

더보기

답 :

totalMenu.add_cascade(label = "상위 메뉴", menu = upMenu)
upMenu.add_command(label = "하위메뉴1")
upMenu.add_separator()
upMenu.add_command(label = "하위메뉴2")

 

10. [프로그램 2]에 화살표 위쪽 키를 누르면 확대되고, 화살표 아래쪽 키를 누르면 축소되는 기능을 추가하세요.

힌트 PhotoImage의 확대 및 축소는 다음과 같이 함수를 활용한다.

photo = photo.zoom(확대배수, 확대배수) # 확대
photo = photo.subsample(축소배수, 축소배수) # 축소

 

 

 

더보기

답 :

from tkinter import *
from tkinter.filedialog import *

## 함수 선언 부분 ##
def func_open() :
    global photo
    filename = askopenfilename(parent = window, filetypes = (("GIF 파일", "*.gif"), ("모든 파일", "*.*")))
    photo = PhotoImage(file = filename)
    pLabel.configure(image = photo)
    pLabel.image = photo

def func_exit() :
    window.quit()
    window.destroy()

def func_zs(event) :
    if event.keycode == 38 :
        zoomphoto = photo.zoom(2, 2) # 확대
        pLabel.configure(image = zoomphoto)
        pLabel.image = zoomphoto
    elif event.keycode == 40 :
        subsamplephoto = photo.subsample(2, 2) # 축소
        pLabel.configure(image = subsamplephoto)
        pLabel.image = subsamplephoto

## 메인 코드 부분 ##
window = Tk()
window.geometry("500x500")
window.title("명화 감상하기")

photo = PhotoImage()
pLabel = Label(window, image = photo)
pLabel.pack(expand = 1, anchor = CENTER)

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.bind("<Up>", func_zs)
window.bind("<Down>", func_zs)

window.mainloop()

 

 

*주의사항 : 제가 직접 푼 것이므로 틀린 부분이 있을 수 있습니다. 오타나 틀린 부분 지적 환영!

+ Recent posts