tkinter GUI 라이브러리
tkinter 는 python 기본 라이브러리로 기능이 뛰어나고
사용자에 따라 굉장히 폭 넓이 활용할 수 있는 우수한 모듈입니다.
처음 GUI 를 만들어보시는 분들에게 적극 추천합니다.
tkinter 화면 생성
코드를 조금 씩 추가하면서 설명 드리도록 하겠습니다.
from tkinter import *
import tkinter as tk
import tkinter.ttk
import tkinter.font
import os
window = Tk()
window.title("check box test")
window.geometry('800x500+220+200')
window.mainloop()
우선 이렇게 위의 코드만 작성하여 실행하면
geometry의 크기와 위치 값에 맞춰 빈화면이 뜨고 title바에 check box test라고
제목이 나타납니다.
체크박스 추가하기
checkbutton
체크박스를 2개 추가해 보겠습니다.
from tkinter import *
import tkinter as tk
import tkinter.ttk
import tkinter.font
import os
window = Tk()
window.title("check box test")
CheckVar1=IntVar()
CheckVar2=IntVar()
c1=Checkbutton(window,text="Music",variable=CheckVar1)
c2=Checkbutton(window,text="Video",variable=CheckVar2)
c1.pack()
c2.pack()
window.geometry('800x500+220+200')
window.mainloop()
위 코드를 실행 하면 Music 과 Video라는 체크 버튼이 생성 되고
클릭할 시 활성 비활성화 상태로 변화합니다.
그러면 이제 활성화 비활성화 상태를 클릭할때 마다 출력해주도록 만들어 보겠습니다.
체크버튼 상태 출력하기
variable
from tkinter import *
import tkinter as tk
import tkinter.ttk
import tkinter.font
import os
window = Tk()
window.title("check box test")
def status1_print():
print(CheckVar1.get())
def status2_print():
print(CheckVar2.get())
CheckVar1=IntVar()
CheckVar2=IntVar()
c1=Checkbutton(window,text="Music",variable=CheckVar1, command=status1_print)
c2=Checkbutton(window,text="Video",variable=CheckVar2, command=status2_print)
c1.pack()
c2.pack()
window.geometry('800x500+220+200')
window.mainloop()
이렇게 variable에 지정한 변수에 상태 값이 저장되기 때문에
CheckVar1.get() 명령어로 상태 값을 출력할 수 있습니다.
클릭 시 마다 1,0으로 변화한 상태를 콘솔 창에서 확인할 수 있습니다.
그러면 최종 선택된 상태를 파일로 저장해 보겠습니다 .
체크버튼 상태를 파일로 저장
file에 저장
from tkinter import *
import tkinter as tk
import tkinter.ttk
import tkinter.font
import os
window = Tk()
window.title("check box test")
t_path = 'c:\\py_gom\\status.txt'
def status1_print():
print(CheckVar1.get())
def status2_print():
print(CheckVar2.get())
def save_status(event):
file = open(t_path,'w')
file.write('%s\n'%CheckVar1.get())
file.write('%s'%CheckVar2.get())
file.close()
print ('save complete!')
def file_open (event):
os.system('start %s'%t_path)
CheckVar1=IntVar()
CheckVar2=IntVar()
c1=Checkbutton(window,text="Music",variable=CheckVar1, command=status1_print)
c2=Checkbutton(window,text="Video",variable=CheckVar2, command=status2_print)
c1.pack()
c2.pack()
save_btn = tkinter.Label (window, text="save",bg='grey19', fg = 'snow')
save_btn.bind('<Button-1>', save_status)
save_btn.bind('<Button-3>', file_open)
save_btn.place(x=180,y=100)
window.geometry('800x500+220+200')
window.mainloop()
save 라벨을 만들어서 왼쪽 클릭할 시,
status.txt 라는 파일에 상태를 저장하도록 하였습니다.
그리고 save라벨을 오른쪽 클릭하면 텍스트 파일을 열어서 보여주도록 하였습니다.
save 라벨 왼쪽 클릭 시 파일 저장
오른 쪽 클릭 시 아래와 같이 텍스트 파일 오픈.
그럼 마지막으로 저장된 텍스트 파일의 정보를 이용하여,
다음 실행 시 상태가 정해지도록 해보겠습니다.
체크버튼 상태 저장 및 반영하기
from tkinter import *
import tkinter as tk
import tkinter.ttk
import tkinter.font
import os
window = Tk()
window.title("check box test")
t_path = 'c:\\py_gom\\status.txt'
def status1_print():
print(CheckVar1.get())
def status2_print():
print(CheckVar2.get())
def save_status(event):
file = open(t_path,'w')
file.write('%s\n'%CheckVar1.get())
file.write('%s'%CheckVar2.get())
file.close()
print ('save complete!')
def file_open (event):
os.system('start %s'%t_path)
def close_sc(event):
window.destroy()
CheckVar1=IntVar()
CheckVar2=IntVar()
c1=Checkbutton(window,text="Music",variable=CheckVar1, command=status1_print)
c2=Checkbutton(window,text="Video",variable=CheckVar2, command=status2_print)
c1.pack()
c2.pack()
stat_list = []
with open(t_path) as f:
for line in f:
stat_list.append(int(line))
print ('stat is %s'%stat_list)
if stat_list[0]==1:
c1.toggle()
else:
pass
if stat_list[1]==1:
c2.toggle()
else:
pass
save_btn = tkinter.Label (window, text="save",bg='grey19', fg = 'snow', width=7, height=2)
save_btn.bind('<Button-1>', save_status)
save_btn.bind('<Button-3>', file_open)
save_btn.place(x=380,y=100)
window.bind('<Escape>', close_sc)
window.geometry('800x500+220+200')
window.mainloop()
최종 코드 입니다.
with 문을 통해 status.txt 파일 내용을 불러와 stat_list에 저장하고
각 체크버튼의 값이 1일 경우 toggle() 명령어로 상태를 활성화 시켜줍니다.
tkinter 체크버튼 활용 예제
serviceapi.nmv.naver.com
실행 동영상입니다.
체크버튼 상태 출력 및 저장, 반영 기능 작성 결과 영상입니다.
후기
esc 버튼을 누르면 창이 종료 되도록 하였습니다.
더 유익한 예제로 뵙겠습니다.