12장. 윈도우 창이 나오는 윈도우 프로그래밍
- 윈도우 창의 기본 구성
123456# -*- coding:utf-8 -*-from tkinter import *window = Tk()window.mainloop() - 제목, 크기, 크기조절 설정
123456789# -*- coding:utf-8 -*-from tkinter import *window = Tk()window.title("윈도우 창 연습")window.geometry("400x300")window.resizable(width=FALSE, height=False)window.mainloop() - Label : 12_01_Label.py
12345678910111213141516171819202122# -*- coding:utf-8 -*-from tkinter import *window = Tk()window.title("윈도우 창 연습")window.geometry("400x400")window.resizable(width=FALSE, height=False)label1 = Label(window, text="파이썬")label2 = Label(window, text="열심히", font=("궁서체", 30), fg="blue")label3 = Label(window, text="공부합시다", bg="magenta", width=20, height=5, anchor=SE)photo = PhotoImage(file="img/jj.gif")label4 = Label(window, image=photo)#label4 = Label(window)#label4.configure(image=photo)label1.pack()label2.pack()label3.pack()label4.pack()window.mainloop()- text : 문자열
- fg : 전경색
- bg : 배경색
- width : 너비
- height : 높이
- anchor : 위치(E, W, S, N, NE, SE, SW, NW, CENTER)
- PhotoImage() : GIF 형식만 지원함
- Button : 12_06_Button.py
12345678910111213141516171819# -*- coding:utf-8 -*-from tkinter import *import tkinter.messageboxdef myFunc():tkinter.messagebox.showinfo("버튼", "버튼이 눌렸어요")window = Tk()btn1 = Button(window, text="종료", fg="red", command=quit)btn1.pack()photo = PhotoImage(file="img/jj.gif")btn2 = Button(window, image=photo, command=myFunc)btn2.pack()window.mainloop() - CheckButton : 12_07_CheckButton.py
12345678910111213141516171819# -*- coding:utf-8 -*-from tkinter import *import tkinter.messagebox as messageboxdef myFunc():if chk.get() == 0:messagebox.showinfo("체크", "체크버튼이 꺼졌어요")else:messagebox.showinfo("체크", "체크버튼이 켜졌어요")window = Tk()chk = IntVar()cb1 = Checkbutton(window, text="체크", variable=chk, command=myFunc)cb1.pack()window.mainloop() - RadioButton : 12_08_RadioButton.py
1234567891011121314151617181920212223242526272829# -*- coding:utf-8 -*-from tkinter import *import tkinter.messagebox as messageboxdef myFunc():if chk.get() == 1:#label1.configure(text="파이썬")label1.configure(text=rdo1.cget("text"))elif chk.get() == 2:label1.configure(text="C++")else:label1.configure(text="Java")window = Tk()chk = IntVar()rdo1 = Radiobutton(window, text="파이썬", variable=chk, value=1, command=myFunc)rdo2 = Radiobutton(window, text="C++", variable=chk, value=2, command=myFunc)rdo3 = Radiobutton(window, text="Java", variable=chk, value=3, command=myFunc)label1 = Label(window, text="선택 언어", fg="red")rdo1.pack()rdo2.pack()rdo3.pack()label1.pack()window.mainloop() - 위젯 배치
- btn1.pack(side = LEFT) : 왼쪽부터 채움
- btn1.pack(side = RIGHT) : 오른쪽부터 채움
- btn1.pack(side = TOP) : 위쪽부터 채움
- btn1.pack(side = BOTTOM) : 아래쪽부터 채움
- btn1.pack(side = TOP, fill = X) : 윈도우 폭에 맞춤
- btn1.pack(side = TOP, fill = X, padx = 10, pady = 5) : 바깥 여백 (10, 5) 픽셀
- btn1.pack(side = TOP, fill = X, ipadx = 10, ipady = 5) : 안쪽 여백 (10, 5) 픽셀
- btn1.place(x = 10, y = 20, width = 100, height = 50) : (x,y) 좌표에 (100,50) 크기
- 마우스 이벤트 : 12_14_MouseEvent.py
12345678910111213141516171819202122232425262728# -*- coding:utf-8 -*-from tkinter import *from tkinter import messageboxdef myFunc1(event):messagebox.showinfo("마우스", "마우스 왼쪽 버튼 클릭 (" + str(event.x) + ", " + str(event.y) + ")")def myFunc2(event):messagebox.showinfo("마우스", "마우스 오른쪽 버튼 클릭 (" + str(event.x) + ", " + str(event.y) + ")")def myFunc3(event):messagebox.showinfo("마우스", "마우스 Enter (" + str(event.x) + ", " + str(event.y) + ")")window = Tk()window.geometry("400x400")label1 = Label(window, text="종료", fg="red", bg="yellow")label1.pack(ipadx="20", ipady="10")window.bind("<Button-1>", myFunc1)window.bind("<Button-3>", myFunc2)label1.bind("<Enter>", myFunc3)window.mainloop() - 키보드 이벤트 : 12_16_KeyEvent.py
12345678910111213# -*- coding:utf-8 -*-from tkinter import *from tkinter import messageboxdef myFunc1(event):messagebox.showinfo("키보드", "눌린 키 : " + chr(event.keycode) + ", " + str(event.keycode))window = Tk()window.geometry("400x400")window.bind("<Key>", myFunc1)window.mainloop()
- …