Programming Language/Python

[Python] 24. GUI(Graphic User Interface) - tkinter

lumana 2023. 11. 8. 02:39

GUI(Graphic User Interface) - tkinter


  • Tcl/Tk 툴킷을 사용하는데 필요한 인터페이스 모듈 (Std library)
import tkinter as tk

root = tk.Tk() # 실행했을 때 나타나는 창 root
label = tk.Label(root, text='Hello World') # root 창에 포함되는 컴포넌트로 label 생성
label.pack() # label 객체를 창에 표시

root.mainloop() # root 창을 event loop에 들어가게 하여 root 창이 종료되지 않고 일을 계속 수행
  • 블로그 프로그램을 만든다고 할 때 사용되는 tkinter component

    • ListBox : 블로그의 목록

    • Label : '제목'이라는 라벨 표시

    • Entry : 제목을 보여주고 입력

    • Text : 내용을 보여주고 입력

    • Button : 블로그 생성, 수정, 삭제

  • ListBox : 블로그의 목록처럼 정해진 순서가 있는 여러개의 데이터를 표시하는 컴포넌트

    from tkinter as tk
    
    root = tk.Tk()
    listbox = tk.Listbox(root)
    listbox.pack()
    
    for i in ['one', 'two', 'three', 'four']:
        listbox.insert(END, i) # 리스트 박스의 마지막 위치에 새로운 데이터 insert
    
    def event_for_listbox(event):
        print("Hello Event")
    
    listbox.bind('<<ListboxSelect>>', event_for_listbox) 
    # click eventbox --> event happen
    
    root.mainloop()
    • ListBox 메서드

      • insert(index, "항목")

        • index 위치에 항목 추가
      • delete(start_index, end_index)

        • start_index 부터 end_index 까지의 항목 삭제
      • size()

        • 항목 개수 반환
      • activate(index)

        • index 위치에 항목 선택
      • curselection()

        • 선택된 항목을 튜플로 반환
      • index(index)

        • index 에 대응하는 위치 획득
      • see(index)

        • index 가 보이도록 리스트 박스의 위치 조정
  • Entry

    • 텍스트를 입력하거나 보여주고자 사용하는 컴포넌트

    • 주로 한 줄로 구성된 문자열을 처리할 때 사용

    • 여러 줄의 문자열을 처리하려면 Text 컴포넌트를 사용한다.

    from tkinter import *
    
    root = Tk()
    entry = Entry(root)
    entry.pack()
    
    entry.insert(0, "Hello python")
    
    root.mainloop()
    • Entry Method

      • insert(index, "문자열")

        • index 위치에 문자열 추가
      • delete(start_index, end_index)

        • start_index부터 end_index까지의 문자열 삭제
      • get()

        • 기입창의 텍스트를 문자열로 반환
      • index(index)

        • index 에 대응하는 위치 획득
      • icursor(index)

        • ndex 앞에 키보드 커서 설정
      • select_adjust(index)

        • index 위치까지의 문자열을 블록처리
      • select_range(start_index, end_index)

        • start_index 부터 end_index 까지 블록처리
  • Text

    • 텍스트를 입력하거나 보여주고자 사용하는 컴포넌트

    • 여러줄을 처리할 때 사용

    from tkinter import *
    
    root = Tk()
    text = Text(root)
    text.pack()
    
    data = '''Life is too short
    You need python'''
    
    text.insert(1.0, data)
    
    root.mainloop()
    • insert 메서드의 첫 번째 매개변수를 보면 1.0이다

    • 소수점 기준 왼쪽은 행, 오른쪽은 열을 뜻한다.

    • 첫번째 행은 1부터 시작한다. (0부터 시작 X)

    • 텍스트에 입력한 내용을 삭제하려만 아래와 같이 하면 됨

      text.delete(1.0, END)
  • Button

    • 버튼을 클릭했을 때 특정 함수를 실행하고자 사용하는 컴포넌트

      from tkinter import *
      
      root = Tk()
      b1 = Button(root, text='테스트')
      b1.pack()
      
      def btn_click(event):
          print("버튼이 클릭되었습니다")
      
      b1.bind('<Button-1>', btn_click)
      
      root.mainloop()
    • 버튼을 클릭했을 때 btn_click() 함수가 실행되도록 이벤트 연결

      button_send = tk.Button(root, text='Send your message', command=handle_button_send)
    • command에 함수명을 입력해 event를 발생시킬 수 있다.

참조) https://wikidocs.net (파이썬 계단밟기)