Python/[파이썬] GUI 프로그래밍

[파이썬] GUI 프로그래밍 #3 버튼 만들기

예찬예찬 2021. 8. 18. 23:03
728x90
반응형

 

버튼을 생성하는 기본 함수는 Button()이다.

btn = Button(root)  # root라는 창에 버튼을 생성
btn.pack()          # 만든 버튼을 창에 배치

이렇게만 한다면 그냥 말그대로 버튼이 생성된다.

 

이제 이 버튼의 기본적인 설정법을 알아보자

btn.config(width=20, height=20) 
# 버튼의 크기 설정 ( 버튼 크기 고정 )
btn.config(padx=20, pady=20) 
# 버튼의 크기 절정 ( 글자 수에 따라 크기 달라짐 값은 글자와 버튼 테두리 사이의 거리 값)
btn.config(text="버튼")
# 버튼의 내용 설정
btn.config(fg="red", bg="yellow")
# 버튼의 글자색(fg)과 배경색(bg) 설정

padx, pady와 width, height은 차이점이 있다.

위에 주석에 써있는 것처럼 

width, height는 말 그대로 버튼의 크기가 고정이 된다. 

하지만 padx, pady는 버튼의 내용이 길어지면 그에 맞춰서 버튼의 크기가 달라지고,

저 값은 버튼의 내용과 버튼의 테두리 사이의 거리 값을 의미한다.

 

 

만약 버튼을 자신이 직접 디자인한 이미지로 만들 고 싶다면 아래의 코드를 사용하면 된다..

photo = PhothImage(file="파일경로") # 이미지 설정
imgbtn = Button(root, image=photo)  # 버튼 생성
imgbtn.pack()                       # 버튼 배치

위에 코드를 사용하면 간단히 이미지를 버튼으로 만들 수 있다.

 

버튼을 만들었으니 이 버튼에 기능을 넣어주자!

버튼에 기능을 넣는다는 말은

버튼이 눌렸을 때 어떠한 현상이 발생한다는 것이다.

 

이 현상을 함수가 실행됐다고 생각하면서 아래 코드를 보면 쉬울 것이다.

def btnpress():                 # 실행되면 "버튼이 눌렸음"이라는 값을 출력하는 함수
	print("버튼이 눌렸음")
    
btn.config(command=btnpress)  # 눌렸을 때 btnpree() 함수를 실행시키는 버튼

버튼이 눌렸을 때 btnpress()함수를 실행시키고 싶다면

위처럼 입력해주면 된다.

다른 함수를 실행시키고 싶어도 마찬가지로 함수의 이름만 바꾸어 주면 된다.

 

예시로 내용이 0인 버튼이 눌릴 때마다 1씩 커지는 기능을 구현하려면

from tkinter import *            # tkinter 라이브러리에 모든 함수를 사용하겠다.
root = Tk()                      # root라는 창을 생성
root.geometry("600x400")       # 창 크기설정
root.title("yeachan_yeachan")    # 창 제목설정
root.option_add("*Font","맑은고딕 25") # 폰트설정
root.resizable(False, False)  # x, y 창 크기 변경 불가

count = 0                    # 변수 생성

def btnpress():              # 함수 btnpress() 정의
    global count             
    count += 1
    btn.config(text = count)

btn = Button(root)           # root라는 창에 버튼 생성
btn.config(text=count)       # 버튼 내용
btn.config(width=10)         # 버튼 크기
btn.config(command=btnpress) # 버튼 기능 (btnpress() 함수 호출)
btn.pack()                   # 버튼 배치

root.mainloop()              # 창 실행

위와 같이 간단하게 구현 할 수 있다. 

아래는 실행화면 이다.

기본적인 알고리즘은 설명하지 않겠다.

 

이렇게 간단히 버튼을 설정하고 만드는 법을 알아봤다.

다음은 입력창을 만든는 법을 공부해보자.

728x90
반응형