본문 바로가기
  • Coding & Book
학습단/SQL 학습단

파이썬 TKINTER를 이용해 GUI 프로그램 사용하기

by 루이3 2023. 8. 19.

GUI

  • GUI는 윈도에 그래픽 환경으로 제공되는 화면을 통틀어서 말합니다.
  • 파이썬을 통해 윈도에 출력되는 GUI 응용 프로그램을 작성할 수 있습니다.

 

TKINTER

  • TKINTER를 활용하면 흔히 사용하는 엑셀, 한글 등 응용프로그램과 비슷한 형태의 프로그램을 만들 수 있습니다.
  • SQL을 전혀 모르는 사용자도 클릭만으로 데이터 입력,조회가 가능하도록 할 수 있습니다.

 

GUI  기본 프로그래밍

  • 아래 코드는 GUI의 가장 기본적인 윈도 화면 구성입니다.
  • 여기서 tkinter는 GUI 관련 모듈을 제공해주는 표준 윈도 라이브러리입니다.

 

from tkinter import *

root = Tk()

#화면 구성

root.mainloop()

 

위의 코드 화면 구성에는 제목과 크기등을 지정할 수 있습니다.

from tkinter import *

root = Tk()
root.title("GUI 연습")
root.geometry("400x200")

root.mainloop()

 

라벨

  • 라벨은 문자를 표현할 수 있는 위젯입니다.
  • 위젯은 윈도에 나오는 버튼, 텍스트, 라디오 버튼, 이미지 등을 통합해서 지칭하는 용어입니다.
  • label(부모윈도, 옵션...) 형식을 사용합니다.
from tkinter import *
root = Tk()
root.geometry("300x100")

label1 = Label(root, text="오늘은")
label2 = Label(root, text="마지막 날 입니다.", font=("궁서체", 30), bg="black", fg="white")

label1.pack()
label2.pack()

root.mainloop()

 

버튼

  • 버튼은 마우스로 클릭하면 지정한 작업이 실행되도록 사용하는 위젯입니다.
  • Button(부모윈도, 옵션..) 형식을 사용합니다.
  • 라벨과의 차이점으로 command 옵션으로 사용자가 버튼을 눌렀을 때 지정한 작업을 처리한다는 점입니다.
from tkinter import *
from tkinter import messagebox

def clickButton() :
    messagebox.showinfo('오늘은', '마지막 날!!!')

root = Tk()
root.geometry("200x200")

button1 = Button(root, text="클릭", fg="red", bg="white", command=clickButton)
button1.pack(expand = 1)

root.mainloop()

 

위젯의 정렬

  • pack() 함수의 옵션 중에서 가로로 정렬하는 방법으로 side=LEFT, RIGHT 방식이 있습니다.
from tkinter import *
root = Tk()

button1 = Button(root, text="날입니다")
button2 = Button(root, text="마지막")
button3 = Button(root, text="오늘은")

button1.pack(side=RIGHT)
button2.pack(side=RIGHT)
button3.pack(side=RIGHT)

root.mainloop()

 

 

위젯 사이의 여백 추가

  • 위젯 사이의 여백은 padx=픽셀값 또는 pady=픽셀값 방식을 사용합니다.
from tkinter import *
root = Tk()

button1 = Button(root, text="오늘은")
button2 = Button(root, text="마지막")
button3 = Button(root, text="날입니다")

button1.pack(side=TOP, fill=X, padx=10,pady=10)
button2.pack(side=TOP, fill=X, padx=10,pady=10)
button3.pack(side=TOP, fill=X, padx=10,pady=10)

root.mainloop()

 

프레임, 엔트리, 리스트 박스

  • 프레임은 화면을 여러 구역으로 나눌 때 사용합니다.
  • 엔트리는 입력상자를 표현합니다.
  • 리스트 박스는 목록을 표현합니다.
from tkinter import *
root = Tk()
root.geometry("200x250")

upFrame = Frame(root)
upFrame.pack()
downFrame = Frame(root)
downFrame.pack()

editBox = Entry(upFrame, width = 10, )
editBox.pack(padx = 20, pady = 20)

listbox = Listbox(downFrame, bg = 'white')
listbox.pack()

listbox.insert(END, "오늘은")
listbox.insert(END, "마지막")
listbox.insert(END, "날입니다")

root.mainloop()

 


모든 코드 종합 후)