Python Graphic 자료 관련 추가 내용

Windows 환경에서 .py를 실행할 때 무작정 더블클릭하면 눈깜짝할 새 사라지는 실행창을 목격할 수 있다.
물론 콘솔로 직접 들어가 접근하여 수행할 수 있지만, 아이콘 더블클릭만으로 수행할 수 있는 방법이 없을까?
2 가지 방법이 있다.

1. getch() 와 같은 기법.
raw_input("end")
마지막 줄에 위의 코드를 삽입하면 된다. 그러면 사용자가 엔터키를 누를 때까지 창이 닫히질 않는다.
하지만 이 방법은 뭔가 찜찜하다. 그럼 내가 작성한 프로그램이 아닌 다른 파이썬 프로그램을 수행할 때는?
직접 본인이 수정하지 않는한 다시 번개처럼 종료된다.

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))