본문 바로가기
Software/Python

[Tkinter] 파이썬으로 GUI 만들기 - Label, Button

by 리미와감자 2024. 1. 30.

파이썬으로 GUI 만들기 - Label, Button

 

Label

텍스트, 이미지 등을 나타내는 라벨 객체를 생성

 

from tkinter import *
# Label은 글자나, 이미지를 보여주고, 어떤 동작을 하지는 않는다.

root = Tk() # 가장 상위 레벨의 윈도우 창 생성
root.title("Stone Forest") # 제목 설정
root.geometry("600x480") # 크기 설정 : 가로 * 세로
# root.geometry("600x480+300+100") # 크기 설정 : 가로 * 세로 + x좌표 + y좌표
root.resizable(False, False) # 창 크기(x 너비, y 너비) 변경 On/Off

label1 = Label(root, text="안녕하세요")
label1.pack()

photo = PhotoImage(file="image/potato.png")
label2 = Label(root, image=photo)
label2.pack()

def change():
    label1.config(text="또만나요")

    global photo2 # 함수가 끝나도 변수를 유지하기 위해 global로 선언
    photo2 = PhotoImage(file="image/fried_potato.png")
    label2.config(image=photo2)

btn = Button(root, text="클릭", command=change)
btn.pack()



root.mainloop() # 윈도우가 종료될 때까지 실행시킴

 

  • label1 = Label(root, text="안녕하세요") : root에 '안녕하세요'를 Label로 하는 객체 생성
  • label1.pack() : Label 위젯을 위에서부터 배치. pack() 말고 grid(), place()가 있지만, 이것들은 나중에 공부.
  • photo = PhotoImage(file="이미지 경로") : 해당 경로의 이미지 객체 생성
  • btn = Button(root, text="클릭", command=change) : root에 버튼 이름 '클릭' 객체 생성. 여기서 command에 버튼이 클릭되었을 때 어떤 동작을 할지 정의할 수 있다.
  • change()라는 함수를 만들어서 버튼과 연동시키자.
  • 버튼이 눌리면 '안녕하세요' label은 '또만나요'로 변하고, 기존의 이미지는 다른 이미지로 변한다.
  • 주의할 점은 함수의 동작이 끝나도 이미지가 유지되도록 photo2 객체를 전역변수(global)로 정의해야한다.

 

버튼 클릭시 Label이 변한다.

 

 

그 외 옵션 설정 시 참고할 사이트

https://www.tutorialspoint.com/python/tk_label.htm

https://076923.github.io/posts/Python-tkinter-2/

 

 

 

 

 

 

Button

 

버튼 객체를 생성

 

from tkinter import *

root = Tk() # 가장 상위 레벨의 윈도우 창 생성
root.title("Stone Forest") # 제목 설정
root.geometry("600x480") # 크기 설정 : 가로 * 세로
# root.geometry("600x480+300+100") # 크기 설정 : 가로 * 세로 + x좌표 + y좌표
root.resizable(False, False) # 창 크기(x 너비, y 너비) 변경 On/Off

btn1 = Button(root, text="버튼1")
btn1.pack()

btn2 = Button(root, padx=5, pady=10, text="버튼2")
btn2.pack()

btn3 = Button(root, padx=10, pady=5, text="버튼3") # padx, pady는 여백
btn3.pack()

btn4 = Button(root, width=10, height=3, text="버튼4") # width, height는 고정된 크기
btn4.pack()

btn5 = Button(root, fg="red", bg="yellow", text="버튼5") # fg: 글자 색깔, bg: 배경 색깔
btn5.pack()

photo = PhotoImage(file="./image/potato.png")
btn6 = Button(root, image=photo)
btn6.pack()

def btncmd():
    print("버튼이 클릭되었어요.")

btn7 = Button(root, text="동작하는 버튼", command=btncmd)
btn7.pack()

root.mainloop() # 윈도우가 종료될 때까지 실행시킴

 

  • padx, pady : 버튼 내부의 x, y 여백 설정
  • width, height : 고정된 버튼의 width와 height 설정
  • fg : 버튼 색깔
  • bg : 배경 색깔
  • label과 마찬가지로 이미지로 버튼을 만들 수 있다.

 

 

  • 버튼이 클릭되면 print문이 동작한다.

 

 

그 외 옵션 설정 시 참고할 사이트

https://www.tutorialspoint.com/python/tk_button.htm

https://076923.github.io/posts/Python-tkinter-3/

댓글