본문 바로가기

Manual

파이썬 Tkinter 사용법

시간 관리 프로그램을 만들면서 사용한 것들을 필요할 때 참고하기 좋게 정리했다. 

표 속에는 실제 사용한 예를 적어 쉽게 복사해서 쓸 수 있게 하였다.

 

차례_______________________________

  • 윈도우 창
  • 메뉴탭
  • 라벨 
  • 버튼 
  • 입력창 
  • 라디오 버튼
  • 트리뷰

___________________________________

모듈

  • import tkinter as tk 
  • import tkinter.ttk as ttk

윈도우 창

  • 생성: 창이름 = Tk() 
  • 제목표시: 창이름.title("표시할이름") 
  • 크기/위치: 창이름.geometry("너비x높이+x좌표+y좌표")
  • 크기조절: 창이름.resizable(width=False, height=False) 
  • 창이름.mainloop() : gui가 종료될때까지 실행시킴
window = tk.Tk()
window.title("Time Management")

메뉴 탭

  • 생성: 이름=ttk.Notebook(창이름, width=너비, height=높이)
  • 배치: 이름.grid(row=0, column=0)
  • 탭에서 표시할 프레임명 = tk.Frame(창이름)
  • 이름.add(프레임명, text="표시할글")
notebook=ttk.Notebook(window, width=400, height=500)
notebook.grid(row=0, column=0)
frame1=tk.Frame(window)
notebook.add(frame1, text="입력")
frame2=tk.Frame(window)
notebook.add(frame2, text="통계")

라벨  

  • 생성: 라벨이름 = tk.Label(표시할창이름, text = "표시할 글자", font=("궁서체", 24), bg='magenta', width=30, height=10, anchor=SE)
  • 위치지정1: 라벨이름.grid(row=0, column=0)
  • 위치지정2: 라벨이름.place(x=100, y=50) 
label1=tk.Label(frame1, text="* 시간 사용 내역을 입력하고, 입력 버튼을 클릭하세요.", font=("나눔고딕", 14), width=50, anchor='w' )
label1.place(x=20, y=10)

 

반응형

 

버튼 

  • 생성: 버튼이름 = tk.Button(표시할창이름, text = “표시할 글”, width=3,  height = 5, command = 함수명)
  • 위치지정1: 버튼이름.grid(row=0,column=0) 
  • 위치지정2: 버튼이름.place(x=100, y=50)
  • 인자 전달
button_save = tk.Button(frame1, text="입  력",font=("나눔고딕", 14), width=10,
                       fg="red", highlightthickness=1, command=get_save)
button_save.place(x=300, y=250)

엔트리(입력 창)

  • 생성: 엔트리이름 = tk.Entry(창이나 프레임 이름, width=너비)
  • 배치: 엔트리이름.place(x=좌표값, y=좌표값)
  • 정수 입력하기: 변수명 = int(엔트리이름.get())  
  • 소수점 입력하기: 변수명 = float(엔트리이름.get())
  • 변수값 입력하기: 엔트리이름.insert(0, 변수이름)
  • 데이터 모두 삭제: 엔트리이름.delete(0, tk.END)
date =tk.Entry(frame1, width=12)
date.place(x=130, y=120)

e_date=int(entry2.get())

text_pt.insert(0, total_min)

entry1.delete(0, tk.END)

 

 

라디오 버튼

  • 생성: 이름 = tk.Radiobutton(나타낼프레임이름, text='표시할글', value='선택시 전달할내용', font=("나눔고딕", 12), variable=변수명, width=10, anchor='정렬방식' )

           - 변수명은 같게, 전달할 내용은 다르게

           - 문자를 전달받기 위해서는 변수를 미리 설정해야 함. 변수명 = tk.Stringvar()

  • 배치: 이름.place(x=130, y=80) 
sort=tk.StringVar()

rad1 = tk.Radiobutton(frame1, text='그림', value='drawing',font=("나눔고딕", 12), variable=sort, width=10, anchor='w' )
rad2 = tk.Radiobutton( …

rad1.place(x=130, y=80)  
rad2.place(x=200, y=80)

트리뷰

  • 생성: treeview=ttk.Treeview(표시할창, columns=[표시할 칼럼을 "칼럼제목", 형식으로 나열], displaycolumns=[표시하는 순서를 "칼럼제목", 형식으로 나열], selectmode='extended')

           treeview.pack()

  • 각 컬럼별로 표시될 이름, 넓이, 정렬 등 설정: treeview.column("#0", width=100, anchor="center")

           treeview.heading("Madeby", text="제조사", anchor="center")

  • 표에 삽입될 데이터: 리스트 형식으로

           df = pd.read_csv('mydata.txt', header = None, names=['MadeBy', 'item', 'p_Day', 'Qty'])

           df_sort = df.sort_values(by = ['p_Day'], ascending = [True])

           treelist= df_sort.values.tolist()

  • 표에 데이터 입력

           for i in range(len(treelist)):

                treeview.insert('', 'end', text=i, values=treelist[i], iid=i)

treeview = tk.ttk.Treeview(frame3, column=["date", "sort", "used_time", "content"],
                           displaycolumns=["date", "sort", "content", "used_time"])
treeview.pack()

treeview.column("date", width=70, anchor="center")
treeview.heading("date", text="날짜", anchor="center")

treeview["show"] = "headings"

row_list = df.values.tolist()

for i in range(len(row_list)):
    treeview.insert("", "end", text="", values=row_list[i], iid=i)

 

728x90