티스토리 뷰
Chapter 10 연습문제 풀이
1. 300 X 300 크기의 윈도창을 만들고, 윈도창의 크기가 변경되지 않도록 하는 코드이다. 빈칸에 들어갈 내용을 보기에서 골라 넣으시오.
resizable, geometry, mainloop
from tkinter import *
window = Tk()
window.title("윈도창 연습")
window.geometry("400x100") # 윈도창의 초기 크기 지정
window.resizable(width = FALSE, height = FALSE) # 가로와 세로의 크기를 고정
window.mainloop() # 이벤트 처리를 위해
2. 버튼을 클릭하면 func1() 함수가 호출되는 코드이다. 빈칸을 채우시오.
myBtn = Button(window, text = "파이썬 종료", fg = "red", command = func1)
3. 버튼 5개를 수직으로 정렬하는 코드이다. 빈칸을 채우시오.
from tkinter import *
window = Tk()
btnList = [None] * 5
for i in range (0, 5) :
btnList[i] = Button(window, text = "버튼" + str(i + 1))
for btn in btnList :
btn.pack(side = TOP)
window.mainloop()
4. 윈도창에서 마우스 오른쪽 버튼을 더블클릭하면 실행되는 코드이다. 빈칸을 채우시오.
from tkinter import *
def myClick(event) :
messagebox.showinfo("마우스", "마우스 오른쪽 버튼이 더블클릭됨")
window = Tk()
window.bind("<Double-Button-3>", myClick)
window.mainloop()
5. [프로그램 1]을 수정해서 PageUp 이나 PageDown 을 눌러도 사진이 바뀌는 기능을 추가하시오. 결과 화면은 [프로그램 1]과 동일하다.
from tkinter import *
from time import *
## 전역 변수 선언 부분 ##
fnameList = ["test1.gif", "test2.gif", "test3.gif", "test4.gif", "test5.gif",
"test6.gif", "test7.gif", "test8.gif", "test9.gif",]
photoList = [None] * 9
num = 0
## 함수 선언 부분 ##
def clickNext() :
global num
num += 1
if num > 8 :
num = 0
photo = PhotoImage(file = "chapter10/gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image = photo
def clickPrev() :
global num
num -= 1
if num < 0 :
num = 8
photo = PhotoImage(file = "chapter10/gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image = photo
## 메인 코드 부분 ##
window = Tk()
window.geometry("700x500")
window.title("사진 앨범 보기")
btnPrev = Button(window, text = "<< 이전", command = clickPrev)
btnNext = Button(window, text = "다음 >>", command = clickNext)
window.bind("<Up>", clickNext) # PageUp key click
window.bind("<Down>", clickPrev) # PageDown key click
photo = PhotoImage(file = "chapter10/gif/" + fnameList[0])
pLabel = Label(window, image = photo)
btnPrev.place(x = 250, y = 10)
btnNext.place(x = 400, y = 10)
pLabel.place(x = 15, y = 50)
window.mainloop()
6. [File] 메뉴 아래에 [Open], [Save] 메뉴 2개를 추가하는 코드이다. 빈칸에 들어갈 내용을 보기에서 골라 넣으시오.
add_cascade, add_command, Menu
fileMenu = Menu(mainMenu) # 메뉴 생성
mainMenu.add_cascade(label = "File", menu = fileMenu) # 상위 메뉴 File을 생성하고 fileMenu에 부착
fileMenu.add_command(label = "Open") # fileMenu의 하위 메뉴 Open 생성
fileMenu.add_command(label = "Save") # fileMenu의 하위 메뉴 Save 생성
7. askinteger(), askstring(), askfloat() 함수를 사용할 때 임포트해야 하는 모듈은 ?
① tkinter
② tkinter.simpledialog
③ tkinter.dialog
④ tkinter.filedialog
Answer ②
8. askinteger() 함수에서 입력값의 범위를 제한할 때 사용하는 항목은 ?
① min, max
② mindata, maxdata
③ minimum, maximum
④ minvalue, maxvalue
Answer ④
9. [파일 열기] 대화상자 및 [다른 이름으로 저장] 대화상자를 나타내는 코드이다. 빈칸을 채우시오.
askopenfilename(parent = window, filetypes = (("GIF 파일", "*.gif"), ("모든 파일", "*.*")))
asksaveasfile(parent = window, mode = "w", defaultextension = ".jpg",
filetypes = (("JPG 파일", "*.jpg;*.jpeg"), ("모든 파일", "*.*")))
10. [프로그램 2]에 상위 메뉴 [이미지 효과]와 하위 메뉴 [확대하기], [축소하기]를 추가하시오. 그리고 [확대하기] 메뉴를 선택하면 이미지가 확대되고, [축소하기] 메뉴를 선택하면 이미지가 축소되도록 코드를 추가하시오.
from tkinter import *
from tkinter.filedialog import *
from tkinter.simpledialog import *
## 전역 변수 선언 부분 ##
filename = ""
## 함수 선언 부분 ##
def func_open() :
global filename # 오픈한 이미지를 확대, 축소하기 위해 변수 공유
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_zoom() : # 확대 함수
value = askinteger("확대배수", "확대할 배수를 입력하세요(2~8)", minvalue = 2, maxvalue = 8) # 확대할 배수 입력
photo = PhotoImage(file = filename) # func_open에서 선택된 파일
photo = photo.zoom(value,value) # 이미지 확대
pLabel.configure(image = photo) # 윈도창에 나타내기
pLabel.image = photo
def func_subsample() : # 축소 함수
value = askinteger("축소배수", "축소할 배수를 입력하세요(2~8)", minvalue = 2, maxvalue = 8) # 축소할 배수 입력
photo = PhotoImage(file = filename) # func_open에서 선택된 파일
photo = photo.subsample(value,value) # 이미지 축소
pLabel.configure(image = photo) # 윈도창에 나타내기
pLabel.image = photo
## 메인 코드 부분 ##
window = Tk()
window.geometry("400x400")
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)
## 이미지 효과 메뉴 추가하는 부분 ##
imageMenu = Menu(mainMenu)
mainMenu.add_cascade(label = "이미지 효과", menu = imageMenu)
imageMenu.add_command(label = "확대하기", command = func_zoom)
imageMenu.add_separator()
imageMenu.add_command(label = "축소하기", command = func_subsample)
window.mainloop()
'python > 파이썬 for Beginner' 카테고리의 다른 글
파이썬 for Beginner Chapter 11 (4) | 2019.05.17 |
---|---|
파이썬 for Beginner Chapter 09 (2) | 2019.04.28 |
파이썬 for Beginner Chapter 08 (4) | 2019.04.28 |
파이썬 for Beginner Chapter 07 (15) | 2019.04.15 |
파이썬 for Beginner Chapter 06 (0) | 2019.04.15 |
- Total
- Today
- Yesterday
- Python Cookbook
- JPA
- git branch
- Thymeleaf
- 김영환
- 쉽게 배우는 운영체제
- spring mvc
- 스프링 테스트
- 프로그래머스
- git
- Spring Data JPA
- 파이썬 for Beginner 솔루션
- 선형 회귀
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- git merge
- 패킷 스위칭
- 파이썬 for Beginner 연습문제
- Spring Boot
- Spring
- 스프링 mvc
- Gradle
- 지옥에서 온 git
- 스프링
- 쉘 코드
- jsp
- Computer_Networking_A_Top-Down_Approach
- 운영체제 반효경
- 스프링 컨테이너
- 방명록 프로젝트
- 생활코딩 javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |