[Python 기초] - GUI 프로그래밍

윤형·2024년 11월 30일

이번 시간에는 tkinter를 이용해 GUI를 만드는 걸 배워보고자 한다.

from tkinter import *

root = Tk() #루트 윈도우를 생성
root.geometry("500x200") #width * height
label = Label(root, text="Hello tkinter") #label위젯 생성
label.pack() #lable위젯을 윈도우에 배치

root.mainloop() #사용자 동작을 대기
위젯설명
Label텍스트를 표시하는 데 사용되는 위젯
Button버튼을 제공하는 위젯
Entry한줄의 텍스트를 입력받는 위젯
Text여려 줄로 된 텍스트를 입력받는 위젯
Frame컨테이너 위젯

레이블 위젯

from tkinter import *

root = Tk()
label1 = Label(root, text="안녕하세요?", bg="yellow", fg="blue",
width=80, height=2 )
label2 = Label(root, text="파이썬을 공부합니다.",font=("궁서체", 32))
label1.pack()
label2.pack()
root.mainloop()

버튼 위젯

root = Tk()

def process():
    label["text"] = "버튼이 클릭됨"
    
button = Button(root, text="클릭하세요!", command=process)
button.pack()
label = Label(root, text="버튼 클릭 안됨", width=30, height=10)
label.pack()
root.mainloop()

엔트리 위젯

엔트리 위젯은 사용자가 키보드로 입력한 내용을 사용자에게 보여주는 위젯이다. get()을 통해 가져오고 , delete()를 이용해 삭제, insert()를 통해 삽입한다.

from tkinter import *

root = Tk()
def process():
    label["text"] = entry.get()+"가 입력됨"

entry = Entry(root, fg="black", bg="yellow", width=20)
entry.pack()
button = Button(root, text="입력 후 클릭하세요!", command=process)
button.pack()
label = Label(root, text="아무 것도 입력 안됨!")
label.pack()
root.mainloop()

체크 박스, 라디오 버튼

from tkinter import *

root = Tk()
def process():
	if var1.get() == 1:
		label["text"] = "체크 박스 #1 선택"
	else:
		label["text"] = "체크 박스 #1 선택 해제"

var1 = IntVar()
Checkbutton(root, text="햄버거", variable=var1, command=process).pack()

label = Label(root, text="선택 안됨")
label.pack()

root.mainloop()
from tkinter import *
root = Tk()
def process():
    if var1.get() == 1:
        label["text"] = "햄버거 선택"
    elif var1.get() == 2:
        label["text"] = "피자 선택"
    else:
        label["text"] = "김밥 선택"
        
var1 = IntVar()
Radiobutton(root, text="햄버거", variable=var1, value=1, command=process).pack()
Radiobutton(root, text="피자", variable=var1, value=2, command=process).pack()
Radiobutton(root, text="김밥", variable=var1, value=3, command=process).pack()
label = Label(root, text="선택 안됨")
label.pack()
root.mainloop()

배치 관리자

Grid로 배치

from tkinter import *

root = Tk()

b1 = Button(root, text="박스 #1", bg="red", fg="black")
b2 = Button(root, text="박스 #2", bg="green", fg="black")
b3 = Button(root, text="박스 #3", bg="orange", fg="black")
b4 = Button(root, text="박스 #4", bg="pink", fg="black")

b1.grid(row=0, column=0) # 0행 0열
b2.grid(row=0, column=1) # 0행 1열
b3.grid(row=1, column=0) # 1행 0열
b4.grid(row=1, column=1) # 1행 1열
root.mainloop()

Place로 배치

from tkinter import *

root = Tk()

b1 = Button(root, text="박스 #1", bg="red", fg="black")
b1.place(x=0, y=0)
b2 = Button(root, text="박스 #2", bg="green", fg="black")
b2.place(x=20, y=30)
b3 = Button(root, text="박스 #3", bg="orange", fg="black")
b3.place(x=40, y=60)

root.mainloop()


사실 파이썬을 이용해 프론트에서 뭔갈 꾸미거나 작업하는 상황은 많이 생기지 않기 때문에 이정도만 하고 넘어가도록 하겠다.

profile
제가 관심있고 공부하고 싶은걸 정리하는 저만의 노트입니다.

0개의 댓글