본문 바로가기
Python/tkinter

[Python tkinter] tkinter 모듈을 이용한 GUI - Canvas 위젯, create_rectangle 로 랜덤한 사각형 만들기

by dev수니 2021. 4. 7.
반응형

 

 

 

지난 포스팅에서 Canvas 위젯을 생성하고 create_rectangle 메서드로 사각형을 만들어 보았다.

오늘은 이 사각형의 좌표값랜덤하게 주어 여러가지 크기사각형을 만들어 볼 것이다.

 

 


 

 

일단 다음과 같이 캔버스를 만들고 안에 사각형을 만든다. 사각형의 색상random 모듈의 choice() 함수를 이용해 임의의 색상을 하나 뽑아 설정해준다. 그리고 크기randint() randrange() 를 사용하여 랜덤하게 설정해준다.

 

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
from tkinter import *
from random import *
 
win = Tk()     # 윈도우창 생성
win.title("Canvas"# 윈도우 타이틀 설정
 
can = Canvas(win,width=400,height=400,bg='pink')  # 캔버스 생성
can.pack()
 
# 함수를 호출하면 사각형이 생성되도록 했다.
def draw_rect():
    # choice로 임의의 색상을 뽑아 color에 담아줬다.
     color = choice(['red','blue','yellow','pink','green','orange'])
    
    # 사각형의 크기를 임의로 지정
     x = randint(0,300)
     y = randint(0,300)
     w = randrange(100)
     h = randrange(100)
 
    # 사각형을 생성하는 부분
     can.create_rectangle(x,y,w,h,fill=color)
 
draw_rect()    # 메서드를 호출하여 사각형을 생성
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행한다.
cs

 

먼저 줄4에서 윈도우 창을 생성하고 줄7에서 캔버스를 생성해주었다.

그리고 줄13에서 choice() 임의의 색상을 뽑아 color 변수에 담아주었고 줄16~19에서 randint()randrange() 임의의 수를 뽑아 각각 x,y,w,h 변수에 담아주었다. 그리고 줄22에서 사각형을 생성할때 위에서 선언한 변수 x,y,w,h 크기로 설정하고 색상은 변수 color 로 설정해 주었다.

 

 

이 모든 것을 줄11에서 함수 draw_rect() 에 담아주었고 줄24에서 함수를 호출사각형을 생성해 주었다.

 

 

따라서 위의 실행결과는 다음과 같다.

 

 

 

사각형을 하나만 만들기는 심심하므로 for문을 이용해 사각형10개정도 생성시켜보자. range() 함수를 이용해 준다.

 

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
from tkinter import *
from random import *
 
win = Tk()     # 윈도우창 생성
win.title("Canvas"# 윈도우 타이틀 설정
 
can = Canvas(win,width=400,height=400,bg='pink')  # 캔버스 생성
can.pack()
 
# 함수를 호출하면 사각형이 생성되도록 했다.
def draw_rect():
    # choice로 임의의 색상을 뽑아 color에 담아줬다.
     color = choice(['red','blue','yellow','pink','green','orange'])
    
    # 사각형의 크기를 임의로 지정
     x = randint(0,300)
     y = randint(0,300)
     w = randrange(100)
     h = randrange(100)
 
    # 사각형을 생성하는 부분
     can.create_rectangle(x,y,w,h,fill=color)
 
for i in range(10):     # 함수호출을 10번 반복하여 사각형 10개생성
     draw_rect()
 
win.mainloop() # 윈도우창이 종료될 때까지 윈도우를 실행한다.
cs

 

 

 

 

 

 

 

 

 

반응형

댓글