GUI 응용 프로그램

는는·2023년 2월 26일
0

SQL - 공부

목록 보기
11/13

GUI는?

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

이를 도와주는 것이 tkinter라는 라이브러리입니다. tkinter를 활용하면 흔히 사용하는 엑셀, 한글, 크롬 등의 응용 프로그램과 비숫한 형태의 프로그램을 만들 수 있습니다. GUI 응용 프로그램을 작성하면 일반 사용자는 마우스만으로 데이터베이스에 쉽게 접근할 수 있습니다.

GUI 기본 프로그래밍

기본 원도의 구성

from tkinter import *
root = Tk()

root.mainloop()

tkinter는 파이썬에서 GUI 관련 모듈을 제공해주는 표준 윈도 라이브러리입니다. 원도 화면이 필요할 때는 꼭 써줘야 합니다.

Tk()는 기본이 되는 윈도를 반환하는데, 이를 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 = '혼공 SQL은')
label2 = Label(root, text = '쉽습니다.', font = ("궁서체", 30),bg= 'blue', fg= 'yellow')

label1.pack()
label2.pack()

root.mainloop()

label() 함수는 라벨을 만듭니다. 옵션에서 text는 글자 내용을, font는 글꼴과 크기를 지정합니다. fg는 foreground의 약자로 글자색을, bg는 background의 약자로 배경색을 지정합니다.
pack() 함수를 통해서 해당 라벨을 화면에 표시해준 것입니다.
label(부모 윈도, 옵션 ...)에서 부모 윈도는 루트 윈도인 root를 지정했습니다. 그러므로 루트 윈도에 라벨이 출력됩니다.

버튼

버튼은 마우스로 클릭하면 지정한 작업이 실행되도록 사용되는 위젯으로, Button(부모윈도, 옵션 ...) 형식을 사용합니다. GUI에서 상당히 많이 사용되는 위젯입니다.
앞에서 익힌 라벨과 차이점이 있다면, command 옵션으로 사용자가 버튼을 눌렀을 때 지정한 작업을 처리해야 한다는 것입니다. 나머지 옵션은 라벨과 거의 동일합니다. 다음 코드는 버튼을 누르면 메시지 상자가 화면에 나타납니다.

위젯의 정렬
pack() 함수의 옵션 중에서 가로로 정렬하는 방법으로 side = LEFT 또는 RIGHT 방식이 있습니다.

from tkinter import *

root = Tk()

button1 = Button(root, text = '혼공1')
button2 = Button(root, text = '혼공2')
button3 = Button(root, text = '혼공3')

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

root.mainloop()

side = LEFT 옵션은 왼쪽부터 채워가라는 의미입니다.
sied = TOP 또는 BOTTOM 방식으로 사용하면 수직으로 정렬할 수 있습니다.

from tkinter import *

root = Tk()

button1 = Button(root, text = '혼공1')
button2 = Button(root, text = '혼공2')
button3 = Button(root, text = '혼공3')

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 = 'yellow')
listbox.pack()

listbox.insert(END, "하나")
listbox.insert(END, "둘")
listbox.insert(END, "셋")

root.mainloop()


upFrame 및 downFrame이라는 2개의 프레임을 생성하고 화면에 출력했습니다. 프레임은 구역을 나눈 것일 뿐 화면에는 표시되지 않습니다.

입력을 위한 엔트리를 나타냈습니다. (upFrame)

리스트 박스를 나타냈습니다. 리스트 박스는 아래쪽인 downFrame에 나오도록했습니다.

리스트 박스에 데이터를 3건 입력했습니다. 옵션 중 END는 데이터를 제일 뒤에 첨부하라는 의미입니다.

0개의 댓글