Python Graphic 자료 관련 추가 내용
Track 1 (Senior)/Major : CE (etc.) 2011. 6. 20. 20:12
Windows 환경에서 .py를 실행할 때 무작정 더블클릭하면 눈깜짝할 새 사라지는 실행창을 목격할 수 있다.
물론 콘솔로 직접 들어가 접근하여 수행할 수 있지만, 아이콘 더블클릭만으로 수행할 수 있는 방법이 없을까?
2 가지 방법이 있다.
1. getch() 와 같은 기법.
물론 콘솔로 직접 들어가 접근하여 수행할 수 있지만, 아이콘 더블클릭만으로 수행할 수 있는 방법이 없을까?
2 가지 방법이 있다.
1. getch() 와 같은 기법.
raw_input("end")
마지막 줄에 위의 코드를 삽입하면 된다. 그러면 사용자가 엔터키를 누를 때까지 창이 닫히질 않는다.
하지만 이 방법은 뭔가 찜찜하다. 그럼 내가 작성한 프로그램이 아닌 다른 파이썬 프로그램을 수행할 때는?
직접 본인이 수정하지 않는한 다시 번개처럼 종료된다.
2. 환경변수 조정
XP 기준으로 보자. 제어판 - 폴더 옵션으로 접근한다. 그러면 새로운 창에 일반, 보기, 파일형식. 이렇게 세 개의 탭이 있다.
파일 형식 탭을 클릭하고 py 파일을 찾는다. 찾았다면 이를 클릭 후 고급 버튼을 클릭.
그럼 아래와 같이 나타나 있을 것이다.
하지만 이 방법은 뭔가 찜찜하다. 그럼 내가 작성한 프로그램이 아닌 다른 파이썬 프로그램을 수행할 때는?
직접 본인이 수정하지 않는한 다시 번개처럼 종료된다.
2. 환경변수 조정
XP 기준으로 보자. 제어판 - 폴더 옵션으로 접근한다. 그러면 새로운 창에 일반, 보기, 파일형식. 이렇게 세 개의 탭이 있다.
파일 형식 탭을 클릭하고 py 파일을 찾는다. 찾았다면 이를 클릭 후 고급 버튼을 클릭.
그럼 아래와 같이 나타나 있을 것이다.
E:\PYTHON22\python.exe "%1" %*
이 아래와 같이 바꾸자.
E:\PYTHON22\python.exe -i "%1" %*
이것으로 해결볼 수 있다. 아니면 직접 환경변수로 접근하는 것도 있지만 처리는 동일하게 이뤄진다.
===========================================================================================================
과제를 다른 방식으로 접근한 내용이다. 한 번 더 짰는데 중복된 것도 있을지 모른다.;;;
##################### 1번 ######################
from tkinter import *
root = Tk()
c = Canvas(root, height=600, width=800, bg="white")
c.pack()
px = [10, 100, 300, 390] # x좌표설정
py = [280, 200, 10, 290] # y좌표설정
t=0.001
while t<=1: #변수 t의 값이 0.001부터 1까지 루프
x = px[0]*(1-t)**3
x = x + 3*px[1]*t*(1-t)**2
x = x + 3*px[2]*t**2*(1-t)
x = x + px[3]*t**3
# x좌표 공식 계산
y = py[0]*(1-t)**3
y = y + 3*py[1]*t*(1-t)**2
y = y + 3*py[2]*t**2*(1-t)
y = y + py[3]*t**3
# y좌표 공식 계산
c.create_rectangle(x, y, x+2, y+2, width=0, fill="black")
# 계산된 각 좌표마다 2*2크기의 점을 생성한다
c.pack() # 생성된 각 점을 그린다
t = t + 0.001
################################## 2번 #################################
from tkinter import *
root = Tk()
c = Canvas(root, height=256, width=256, bg="white")
c.pack()
R=[[0]*128 for i in range(128)] #Red 색상 값을 저장할 배열
G=[[0]*128 for i in range(128)] #Green 색상 값을 저장할 배열
for j in range(0,128):
for i in range(0,128): # 2중배열을 이용하여 128*128좌표에 색값을 저장
R[i] = 2*i
G[i] = 2*j
c.create_rectangle(2*i,2*j,2*i+2,2*j+2, width=0, fill="#%02x%02x%02x"%(R[i],G[i], 128))
# 저장된 색값을 2*2크기의 점으로 보여준다.
########################## 3번 ################################
from tkinter import*
root = Tk()
c = Canvas(root, height=256, width=256)
c.pack()
R = [[0]*130 for i in range(130)] # 블러링을 위해 기존 크기에 (+2)한 Red 색상 값을 저장할 배열
G = [[0]*130 for i in range(130)] # 블러링을 위해 기존 크기에 (+2)한 Green 색상 값을 저장할 배열
mask = 0.111 # mask의 필터 적용, 1/9를 0.111로 표현
BR = 0.000 # 블러링된 Red색값을 저장하는 변수
BG = 0.000 # 블러링된 Green색값을 저장하는 변수
for i in range(128): #블러링 전의 색깔 값을 배열에 저장
for j in range(128):
R[i][j]=2*i
G[i][j]=2*j
for i in range(0,128): #x좌표 만큼 루프
for j in range(0,128): #y좌표 만큼 루프
for k in range(0,3): #mask의 가로 크기만큼 루프
for l in range(0,3): #mask의 세로 크기만큼 루프
BR = BR + mask*R[i+k][j+l] #계산후 임시 변수에 값 저장
BG = BG + mask*G[i+k][j+l]
c.create_rectangle(2*i,2*j,2*i+2,2*j+2,width=0, fill="#%02x%02x%02x"%(BR,BG,128))
# 블러링된 색값을 2*2크기의 점으로 보여준다.
BR=0.000
BG=0.000
# 변수들 초기화
####################### 4번 #########################################
from tkinter import*
import math #회전공식중 삼각함수를 이용하기 위해 선언
root = Tk()
c = Canvas(root, height = 256, width = 256, bg="white")
c.pack()
R=[[0]*128 for i in range(128)] # Red 색상 값을 저장할 배열
G=[[0]*128 for i in range(128)] # Green 색상 값을 저장할 배열
mid = 64 # 중앙을 기준으로 45도 회전하므로 중앙값 필요
rots = math.sin(45*(3.14/180.0)) # sin45값을 저장
rotc = math.cos(45*(3.14/180.0)) # cos45값을 저장
for i in range(0,128):
for j in range(0,128): # 2중배열을 이용하여 회전된 128*128좌표에 색값을 저장
R[i][j] = (i*rotc-j*rots-mid*(rotc-rots-1))*2
G[i][j] = (i*rots+j*rotc-mid*(rots+rotc-1))*2
for i in range(0,128):
for j in range(0,128): # 2중배열을 이용하여 128*128좌표에 저장된 색 값을 2*2크기의 점으로 보여준다.
if ((0 < R[i][j] < 256) and (0 < G[i][j] < 256)): # 캔버스 내의 점들만 나타내기 위해서,,
c.create_rectangle(2*i, 2*j, 2*i+2, 2*j+2, width=0, fill="#%02x%02x%02x"%(R[i][j], G[i][j], 128))
'Track 1 (Senior) > Major : CE (etc.)' 카테고리의 다른 글
pi 값 유도 및 증명 (0) | 2011.06.20 |
---|---|
n명의 사람들 중 적어도 두 사람의 생일이 같을 확률 (0) | 2011.06.20 |
Python을 이용한 비트맵 그래픽 (0) | 2011.06.20 |
Assembler Detail (Algorithms) (0) | 2011.06.20 |
디지털 논리 -순차회로 설계- (0) | 2011.06.20 |