Preface
이번 장은 파이썬의 기본적인 문법 부분과 라이브러리인 tkinter의 사용 방법 부분, 그리고 파이썬과 MySQL의 연동 부분으로 구성되어 있다.
앞 부분의 파이썬 기본 문법은 이미 전부 업로드했던 것들이라 한 번 읽어본 후 넘어갔고, 뒷 부분의 연동 부분은 내용이 너무 많아 따로 업로드할 생각이다.
결국 이번 글은 tkinter에 관한 내용인데, 이는 파이썬을 사용하며 별도의 윈도우 창을 사용하는 라이브러리이다.
딱히 어렵거나 이해가 되지 않는 부분은 없었고, 추후 필요할 때마다 구글링을 하며 사용하면 충분할 것 같다.
1. 윈도 프로그래밍
- tkinter: 파이썬에서 GUI 관련 모듈을 제공해주는 표준 윈도 라이브러리
- Tk( ): 루트(베이스) 윈도라고 부르며, 기본이 되는 윈도를 반환한다.
- window.mainloop( ): 다양한 이벤트를 처리하기 위한 함수
- 윈도 창 1
from tkinter import *
window = Tk()
# 이 부분에서 화면을 구성하고 처리
window.mainloop()
- 윈도 창 2
from tkinter import *
window = Tk()
window.title("윈도창 연습")
window.geometry("400x100")
window.resizable(width=FALSE, height=FALSE)
window.mainloop()
- 라벨(Label): 문자를 표현할 수 있는 위젯
1) 형식: Label(부모윈도, 옵션)
2) fg: 글자색
3) bg: 배경색
4) width: 위젯의 폭
5) height: 위젯의 높이
6) anchor: 위젯의 위치 지정 (N, NE, E, SE, S, SW, W, NW, CENTER 등)
- 라벨과 같은 위젯들은 pack( ) 함수를 호출해 줘야 화면에 나타난다.
- 라벨 활용
from tkinter import *
window = Tk()
label1 = Label(window, text="This is MySQL을")
label2 = Label(window, text="열심히", font=("궁서체", 30), fg="blue")
label3 = Label(window, text="공부 중입니다.", bg="red", width=20, height=5,
anchor=CENTER)
label1.pack()
label2.pack()
label3.pack()
window.mainloop()
- 버튼(Button): 마우스로 클릭하면 눌리는 효과와 함께 지정한 작업이 실행되도록 사용되는 위젯
1) 형식: Button(부모윈도, 옵션)
2) command 옵션: 버튼을 눌렀을 때 지정한 작업을 처리할 수 있다.
- 버튼 활용
from tkinter import *
from tkinter import messagebox
def click_button():
messagebox.showinfo('버튼 클릭', '버튼을 클릭했습니다.')
window = Tk()
window.geometry("200x200")
button1 = Button(window, text="여기 눌러요", fg="red", bg="yellow",
command=click_button)
button1.pack(expand=1)
window.mainloop()
- pack( ) 함수의 정렬 옵션
1) 수평 정렬: side=LEFT, RIGHT
2) 수직 정렬: side=TOP, BOTTOM
- 위젯 정렬 1
from tkinter import *
window = Tk()
button1 = Button(window, text="버튼1")
button2 = Button(window, text="버튼2")
button3 = Button(window, text="버튼3")
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
window.mainloop()
- 위젯 정렬 2
from tkinter import *
window = Tk()
btnList = [None] * 3
for i in range(3):
btnList[i] = Button(window, text="버튼" + str(i + 1))
for btn in btnList:
btn.pack(side=TOP, fill=X, padx=10, pady=10)
window.mainloop()
- pack( ) 함수의 여백 옵션
1) padx=픽셀값: x 축 여백 설정
2) pady=픽셀값: y 축 여백 설정
- 프레임(Frame): 화면을 구역을 나눌 때 사용
- 엔트리(Entrty): 입력 상자를 표현
- 리스트박스(Listbox): 목록을 표현
- 프레임, 엔트리, 리스트박스 활용
from tkinter import *
window = Tk()
window.geometry("200x200")
upFrame = Frame(window)
upFrame.pack()
downFrame = Frame(window)
downFrame.pack()
editBox = Entry(upFrame, width=10, bg='green')
editBox.pack(padx=20, pady=20)
listbox = Listbox(downFrame, bg='yellow')
listbox.pack()
listbox.insert(END, '하나') # end는 데이터를 제일 뒤에 첨부하라는 의미
listbox.insert(END, '둘')
window.mainloop()
- 메뉴(Menu)를 만들기 위한 구성 개념과 형식
메뉴자체 = Menu(부모윈도)
부모윈도.config(menu=메뉴자체)
상위메뉴 = Menu(메뉴자체)
메뉴자체.add_cascade(label="상위메뉴텍스트", menu=상위메뉴)
상위메뉴.add_command(label="하위메뉴1", command=함수1)
상위메뉴.add_command(label="하위메뉴2", command=함수2)
- 메뉴 활용
from tkinter import *
from tkinter import messagebox
# 함수 선언부
def func_open():
messagebox.showinfo("메뉴 선택", "열기 메뉴를 선택함")
def func_exit():
window.quit()
window.destroy()
# 메인 코드
window = Tk()
mainMenu = Menu(window)
window.config(menu=mainMenu)
fileMenu = Menu(mainMenu)
mainMenu.add_cascade(label="파일", menu=fileMenu)
fileMenu.add_command(label="열기", command=func_open)
fileMenu.add_separator() # 구분줄
fileMenu.add_command(label="종료", command=func_exit)
window.mainloop()
- 대화 상자
1) messagebox.showinfo( ): 기본적인 메시지 창을 보여줌
2) tkinter.simpledialog 모듈을 임포트한 후 사용할 수 있는 대화 상자
→ 형식: ask자료형("제목", "내용", "옵션") (minvalue: 최소 값, maxvalue: 최대 값)
① askinterger( )
② askstring( )
③ askfloat( ), etc...
- 대화 상자 활용
from tkinter import *
from tkinter.simpledialog import *
# 함수 정의 부분
window = Tk()
window.geometry("400x100")
label1 = Label(window, text="입력된 값")
label1.pack()
value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue=1,
maxvalue=6)
label1.configure(text=str(value))
window.mainloop()
- 캔버스(Canvas): Tk( )로 생성한 윈도 창에선 선, 면, 글자 등의 그림을 그릴 수 없어 사용하는 별도의 창
- 캔버스 활용
from tkinter import *
from tkinter.simpledialog import *
window = Tk()
canvas = Canvas(window, height=300, width=300)
canvas.pack()
canvas.create_line([[0, 0], [70, 70], [30, 170]], fill="blue", width=3)
canvas.create_polygon([[100, 100], [100, 150], [150, 150], [150, 100]], fill="red")
canvas.create_text([200, 200], text="이것이 MySQL이다", font=("굴림", 15))
window.mainloop()
'DB & SQL > 이것이 MySQL이다' 카테고리의 다른 글
(Fin) 파이썬과 MySQL 응용 프로그래밍 (0) | 2022.07.13 |
---|---|
PHP와 MySQL의 연동 (0) | 2022.07.10 |
PHP 기본 프로그래밍 (0) | 2022.07.02 |
Visual Studio Code에서 PHP 코드 실행하기 (2) | 2022.07.02 |
MySQL과 공간 데이터 (0) | 2022.06.27 |
댓글