상세 컨텐츠

본문 제목

[Python 파이썬 독학 활용2편 1일차] GUI(tkinter) - 1-3

파이썬 스터디/파이썬-Python 활용편2

by 후즈테크 2021. 7. 30. 08:48

본문

반응형

9. 라디오 버튼 

    : 해당 그룹에 등록된 항목 중 1개만 선택할 경우 사용 /  중복선택 시 리스트박스(listbox)사용

from tkinter import *

root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨

lable1 = Label(root, text ="메뉴를 선택하세요").pack()

#radio 는 1개 선택이기 때문에 variable 을 공통으로 사용
burger_var = IntVar() # int 형으로 저장

btn_burger1 = Radiobutton(root, text="햄버거", value=1, variable=burger_var)
#btn_burger1.select()
btn_burger2 = Radiobutton(root, text="치즈햄버거", value=2, variable=burger_var)
btn_burger3 = Radiobutton(root, text="치킨햄버거", value=3, variable=burger_var)
btn_burger3.select()

btn_burger1.pack()
btn_burger2.pack()
btn_burger3.pack()



lable2 = Label(root, text ="음료를 선택하세요").pack()

drink_var = StringVar() # string 형으로 저장

btn_drink1 = Radiobutton(root, text="콜라", value="콜라", variable=drink_var)
#btn_drink1.select()
btn_drink2 = Radiobutton(root, text="사이다", value="사이다", variable=drink_var)
btn_drink3 = Radiobutton(root, text="환타", value="환타", variable=drink_var)
btn_drink3.select()

btn_drink1.pack()
btn_drink2.pack()
btn_drink3.pack()



def btncmd():
    print("선택된 햄버거 항목은 : " , burger_var.get(), "입니다.")   # 선택된 burger_var 의 value 값 반환
    print("선택된 음료 항목은 : " , drink_var.get(), "입니다.")   # 선택된 drink_var 의 value 값 반환

btn = Button(root, text="주문", command=btncmd)
btn.pack()


root. mainloop()

주의사항

 - btn_burger1 = Radiobutton(root, text="햄버거", value=1, variable=burger_var)
 - btn_burger2 = Radiobutton(root, text="치즈햄버거", value=2, variable=burger_var)
 - btn_burger3 = Radiobutton(root, text="치킨햄버거", value=3, variable=burger_var)

    : radio 버튼은 해당 그룹 중 1개의 항목을 선택하기 때문에 동일한 variable 변수를 지정하고 value 값을 구분한다.

 

 - btn_burger3.select()

    : select() 를 이용해 미리 기본 선택을 할 수 있다.

 

 

 - burger_var = IntVar() # int 형으로 저장

 - drink_var = StringVar() # string 형으로 저장

    : 햄버거와 음료처럼 구분이 다를 그룹은 각각의 변수로 variable 을 만든다.

      필요에 따라 정수형, 실수형, 문자형 등으로 구별할 수 있고 vlaue 값을 할당 할 수 있다.

 

※ variable 의 data type에 따라 결과 값도 int(정수형), str(문자형)으로 출력되는 것을 확인할 수 있다.

반응형

 

 

 

10 .콤보 박스 

from tkinter import *
import tkinter.ttk as ttk


root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨


values = [str(i) + "일" for i in range(1,32)] # 1 부터 31까지의 숫자

#combobox 사용시 별도로 tkinter.ttk import 진행
combbox = ttk.Combobox(root, height=5, values=values )
combbox.pack()
combbox.set("카드 결제일")


readonly_combbox = ttk.Combobox(root, height=10, values=values , state="readonly")
#state 선택으로 해당 radio 값 외 다른 값 입력 불가.
readonly_combbox.current(0) # 1번째 값 선택
readonly_combbox.pack()


def btncmd():
    print(combbox.get())
    print(readonly_combbox.get())

btn = Button(root, text="선택", command=btncmd)
btn.pack()


root. mainloop()

 

주의사항

 - import tkinter.ttk as ttk

    : combobox 사용시 별도로 tkinter.ttk 모듈을 import 가 필요하다.

 

 - values = [str(i) + "일" for i in range(1,32)] # 1 부터 31까지의 숫자

    : 리스트 형식으로 해당 값 관리

    : 한 줄 for 문 형식에 대한 추가 공부 필요 시 참조.

      참고자료 : https://leedakyeong.tistory.com/entry/python-for%EB%AC%B8-if%EB%AC%B8-%ED%95%9C-%EC%A4%84%EB%A1%9C-%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0

 

 - combbox = ttk.Combobox(root, height=5, values=values )

    : height 로 한 번에 볼 수 있는 항목 갯수 표기

 

 - combbox.set("카드 결제일")

    : 기본값을 사전에 설정할 수 있음.

 

 - readonly_combbox = ttk.Combobox(root, height=10, values=values , state="readonly")

    : state="readonly" 사용자가 임의로 입력 또는 변경가능 할 수 없도록 읽기 상태만 고정.

 

 - readonly_combbox.current(0) # 1번째 값 선택

    : current(해당 list의 index 번호) 로 해당 값 미리 선택 가능. 0부터 시작

 

 - combbox.get()

    : get()을 이용해 선택된 값을 가져 올 수 있다.

 

 

11. 프로그레스 바 

 

11-1. progressbar 유형별 1

from tkinter import *
import tkinter.ttk as ttk
import time


root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨


#progressbar 1 번 실습
#progressbar = ttk.Progressbar(root, maximum=100, mode="indeterminate")
# mode= indeterminat : 결정되지 않음. 좌우 움직임 반복 
progressbar = ttk.Progressbar(root, maximum=100, mode="determinate")
# mode= determinat : 결정되지 않음. 좌에서 우로 progressbar 채우면서 움직임 반복 
progressbar.start(10) # 10ms 마다 움직임
progressbar.pack()

def btncmd():
    progressbar.stop() # 작동 중지
    

btn = Button(root, text="중지", command=btncmd)
btn.pack()

root. mainloop()

주의사항

 - import tkinter.ttk as ttk

    : combobox와 동일하게 progressbar 사용시에도 별도로 tkinter.ttk 모듈을 import 가 필요하다.

 

 - progressbar = ttk.Progressbar(root, maximum=100, mode="indeterminate")

    : mode= indeterminat : 좌우 움직임 반복. 

     mode= determinat : 좌에서 우로 progressbar 채우면서 움직임 반복 

      ※ 두 가지 mode 모두 움직임이 반복되기 때문에 진행률등을 예상하거나 상태 값을 결정할 수 없음.

 

 - progressbar.stop() 

    : 해당 명령어를 통해 progressbar 를 중지 시킬 수 있음.

 

11-1. progressbar 유형별 2

from tkinter import *
import tkinter.ttk as ttk
import time


root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨


#2번실습
p_var2 = DoubleVar() # 소수점 단위 실수 반영을 위해 Double 사용

progressbar2 = ttk.Progressbar(root, maximum=100, length=150, variable=p_var2)
progressbar2.pack()


def btncmd2():
    for i in range(1, 101) :
        time.sleep(0.01)
    
        p_var2.set(i) # progressbar 값 설정
        progressbar2.update() # 매번 동작시 반영 ui, 해당 값 표시 안할 경우 완료 후 표기됨

        print(p_var2.get())

btn = Button(root, text="시작", command=btncmd2)
btn.pack()

root. mainloop()

주의사항

 - p_var2.set(i) 

    : progressbar 값을 set을 이용하여 설정


 - progressbar2.update()

    : 매번 동작시 반영 ui, 해당 값 표시 안할 경우 완료 후 progressbar가 100% 완료시에 표기됨

 

 

여기까지 GUI(Tkinter) 1일치 공부량(동영상 기준 1시간)을 정리하였다.

 

늘 컴퓨터를 사용하며 보던거라 이해하기 좋았고, 적고 나니 별거 없는것 같으나.....

필요할 때 잘 기억해서 사용만 할 수 있으면 좋겠다..

반응형

관련글 더보기

댓글 영역