2020. 1. 27. 11:56
반응형

파이썬의 Tkinter를 이용하면 쉽게 윈도우나 리눅스의 gui 프로그램을 만들 수 있다.

문서에 보면 Tkinter 말고도 wxWidgets, Qt, Gtk+, Kivy, FLTK, OpenGL 등이 있다고 나와있다.

https://docs.python.org/ko/3/faq/gui.html

 

그래픽 사용자 인터페이스 FAQ — Python 3.8.1 문서

여러분이 목표로 하는 플랫폼에 따라, 몇 가지가 있습니다. 그들 중 일부는 아직 파이썬 3에 이식되지 않았습니다. 적어도 Tkinter와 Qt는 파이썬 3과 호환되는 것으로 알려져 있습니다. 파이썬의 표준 빌드에는 Tcl/Tk 위젯 집합에 대한 객체 지향 인터페이스가 포함되는데, tkinter라고 불립니다. 이것이 아마도 가장 (파이썬의 대부분 바이너리 배포에 포함되어 있으므로) 설치하고 사용하기 쉽습니다. 소스에 대한 안내를 포함하는 Tk에 대한 자세한

docs.python.org

일단 설치나 라이센스 문제 등에서 가장 간편하고 쉽게 이용할 수 있는게 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 버튼이 활성화되면서 시계가 멈춘다.

 

반응형