fg
fg 파라미터
글씨의 색깔을 바꿔준다.
grid
grid로 컴포넌트를 배치한다.
GREEN = "#9bdeac"
YELLOW = "#f7f5dd"
PINK = "#EBC7E8"
from tkinter import *
window = Tk()
window.title("dog_time")
window.config(padx=100, pady=50, bg=YELLOW)
canvas = Canvas(width=400, height=300, bg=PINK, highlightthickness=0)
dog_img = PhotoImage(file="dog.png")
canvas.create_image(200, 140, image=dog_img)
canvas.create_text(190,30, text="00:00", fill = "purple", font =("Courier", 40, "bold"))
canvas.grid(row=1, column=1)
label_time = Label(text="Timer", font= ("Courier", 50, "bold"), fg=GREEN, bg= YELLOW)
label_time.grid(row=0, column=1)
button_start = Button(text="Start", font= ("Courier", 20, "bold"), fg="black", bg=YELLOW, highlightthickness=0)
button_start.grid(row=2, column=0)
button_reset = Button(text="Reset", font=("Courier", 20, "bold"), fg="black", bg=YELLOW, highlightthickness=0)
button_reset.grid(row=2, column=2)
check = Label(text="V", fg=GREEN, bg=YELLOW)
check.grid(row=3, column=1)
window.mainloop()
after()
after(ms=?, fun=?, arg*)
ms : 1초 =1000ms
fun : ms 뒤에 해야할 일
arg* : 무제한 위치 인자이다.
def say_something(thing, a, b):
print(thing)
print(a)
print(b)
window.after(1000, say_something,"NO", 1 , 2)
재귀호출
재귀호출로 반복문 만들기
def count_down(number):
print(number)
if number>0:
window.after(1000, count_down, number-1)
count_down(5)
count_down(5) ->window.after(1000, count_down, 4)
count_down(4)-> window.after(1000, count_down, 3)
count_down(3)-> window.after(1000, count_down, 2)
count_down(2)-> window.after(1000, count_down, 1)
count_down(1)-> window.after(1000, count_down, 0)
카운트 다운 출력
00:00 자리에서 카운트 다운하게 만들기
time_text =canvas.create_text(190,30, text="00:00", fill = "purple", font =("Courier", 40, "bold"))
먼저 캔버스에 쓰여진 00:00을 time_text라는 변수에 저장한다.
itemconfig()
canvas.itemconfig()
캔버스에 텍스트를 바꾸어준다.
무엇을, 어떻게 파라미터가 차례로 온다.
def count_down(number):
canvas.itemconfig(time_text, text=number)
if number>0:
window.after(1000, count_down, number-1)
command
start 버튼을 누르면 타이머가 작동하도록 한다.
먼저 start_timer() 함수를 만들어 호출 시 count_down이 작동하게 하고
def start_timer():
count_down(5)
버튼 컴포넌트에 command로 start_timer를 넣는다.
button_start = Button(text="Start", font= ("Courier", 20, "bold"), fg="black", bg=YELLOW, highlightthickness=0, command=start_timer)
math.floor()
math 모듈의 floor 함수로 버림 구현하기
import math
number =math.floor(6.3435)
print(number)
6
분:초 형식으로 타이머 카운트 바꾸기
타이머 출력형식 바꾸기
분:초로 나오게 만들기
def count_down(number):
minute = math.floor(number/60)
second = number % 60
canvas.itemconfig(time_text, text=f"{minute}:{second}")
if number>0:
window.after(1000, count_down, number-1)
동적타이핑 특성 이용하기
60, 50, 34, 10, 09, 01, 00 이런 식으로
초 단위가 두 자리까지 나오게 만들어보자.
파이선은 다른 유형의 값을 지정하면 아주 간단하게
다른 데이터타입을 가질 수 있다.
즉 동적타이핑의 특성을 이용하면 된다.
첫 번째 방법은 str()로 데이터타입을 바꿔준 뒤, 문자열 연산(+)을 이용한다.
minute = math.floor(number/60)
second = number % 60
if second ==0 or second<10:
second="0" + str(second)
두 번째 방법은 f스트링을 이용하여 모든 변수를 문자형으로 바꿔준다.
minute = math.floor(number/60)
second = number % 60
if second ==0 or second<10:
second=ㄹf"0{second}"
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[28-6 파이썬] tkinter 타이머 만들기, after_cancel() (최종) (0) | 2022.09.17 |
---|---|
[28-5 파이썬] tkinter 동적타이핑 (0) | 2022.09.17 |
[28-3 파이썬] 이미지에 색깔 넣기(배경, 경계) (0) | 2022.09.17 |
[28-2 파이썬] tkinter Canvas widget, 캔버스 위젯 (0) | 2022.09.17 |
[28-1 파이썬] 컬러헌트에서 색깔 찾기, 헥스코드 (0) | 2022.09.17 |