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 문 형식에 대한 추가 공부 필요 시 참조.
- 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시간)을 정리하였다.
늘 컴퓨터를 사용하며 보던거라 이해하기 좋았고, 적고 나니 별거 없는것 같으나.....
필요할 때 잘 기억해서 사용만 할 수 있으면 좋겠다..
[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-2 (0) | 2021.08.01 |
---|---|
[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-1 (0) | 2021.08.01 |
[Python 파이썬 독학 활용2편 1일차] GUI(tkinter) - 1-2 (0) | 2021.07.29 |
[Python 파이썬 독학 활용2편 1일차] GUI(tkinter) - 1-1 (0) | 2021.07.29 |
[Python 파이썬 독학 활용2편 0일차] GUI(tkinter) - 0 (시작전) (0) | 2021.07.29 |
댓글 영역