*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()
*주의사항 : 제가 직접 푼 것이므로 틀린 부분이 있을 수 있습니다. 오타나 틀린 부분 지적 환영!
'Back-End > Python' 카테고리의 다른 글
파이썬 for Beginner 3판 12장 연습문제 답(더보기 클릭) (0) | 2023.06.27 |
---|---|
파이썬 for Beginner 3판 11장 연습문제 답(더보기 클릭) (0) | 2023.06.22 |
파이썬 for Beginner 3판 9장 Self Study + 연습문제 답(더보기 클릭) (0) | 2023.06.01 |
파이썬 for Beginner 3판 7장 Code07-07.py 문제 오류 (0) | 2023.05.04 |
파이썬 for Beginner 3판 6장 Self Study + 연습문제 답(더보기 클릭) (2) | 2023.05.04 |