2020. 1. 27. 11:56
반응형
파이썬의 Tkinter를 이용하면 쉽게 윈도우나 리눅스의 gui 프로그램을 만들 수 있다.
문서에 보면 Tkinter 말고도 wxWidgets, Qt, Gtk+, Kivy, FLTK, OpenGL 등이 있다고 나와있다.
https://docs.python.org/ko/3/faq/gui.html
일단 설치나 라이센스 문제 등에서 가장 간편하고 쉽게 이용할 수 있는게 Tkinter인 것으로 보였다.
그리고 간단하게 시계 프로그램을 만들어봤다.
start를 누르면 시계가 1초마다 현재 시각을 나타내고, stop을 누르면 마지막으로 표시한 시각에서 그냥 그대로 멈추는 기능이다.
이 프로그램을 활용하면 일정 시간에 따라 어떤 동작을 하도록 프로그래밍 할 수 있다.
참고로 파이썬을 설치했다고 가정하고 진행했다.
아래 코드를 작성하고 test.py라고 저장한 다음 python test.py 와 같이 실행하면 된다.
gui프로그램이기 때문에 우분투 서버와 같이 gui화면이 지원되지 않는 환경에서는 잘 안될 것 같다.
import tkinter
import time
class Application(tkinter.Frame):
def __init__(self, master):
super().__init__(master)
self.timer = None
self.master = master
self.master.title("simple timer")
self.pack(fill='both', expand=True)
now = time.strftime("%Y-%m-%d %H:%M:%S")
self.label = tkinter.Label(self, text=str(now))
self.label.pack(padx=10, pady=10)
self.start_button = tkinter.Button(self, text='start')
self.start_button.pack(side='left', padx=10, pady=10)
self.start_button.bind("<Button-1>", self.startTimer)
self.stop_button = tkinter.Button(self, text='stop', state='disabled')
self.stop_button.pack(side='left', padx=10, pady=10)
self.stop_button.bind("<Button-1>", self.stopTimer)
def startTimer(self, *_):
self.tiktok()
self.start_button.configure(state='disabled')
self.stop_button.configure(state='normal')
def stopTimer(self, *_):
self.after_cancel(self.timer)
self.stop_button.configure(state='disabled')
self.start_button.configure(state='normal')
def tiktok(self):
now = time.strftime("%Y-%m-%d %H:%M:%S")
self.label.config(text=str(now))
self.timer = self.after(1000, self.tiktok)
root = tkinter.Tk()
root.geometry("300x100+100+100")
app = Application(root)
app.mainloop()
실행한 모습 (start를 누르면 stop 버튼이 활성화 되면서 시계가 작동하기 시작한다.)
stop이 활성화된 다음 버튼을 누르면 start 버튼이 활성화되면서 시계가 멈춘다.
반응형
'dev' 카테고리의 다른 글
[ASP.NET Core] 파일 업로드 기능 구현 (ajax, 멀티) (0) | 2020.02.26 |
---|---|
[ASP.NET Core] 앱 재시작 없이 페이지 변경사항 반영 (0) | 2020.02.13 |
[JavaScript] ResizeSensor: HTML 엘리먼트 크기 변화 감지 (0) | 2020.02.13 |
[JavaScript] moment.js를 이용한 일수 계산 (0) | 2020.01.29 |
[HTML] contenteditable 이용, div 편집 가능하도록 하기 (0) | 2019.11.13 |
[HTML/CSS] 테이블 헤더 고정 (ie에서는 안됨) (0) | 2019.10.20 |
[MSSQL] inserted 이용 입력한 Identity 얻기 (0) | 2019.10.18 |
[JavaScript] 랜덤 전화번호 생성 (csv파일 출력) (0) | 2019.10.02 |