본문 바로가기
** My Projects

파이썬 Python 프로젝트 - 업무용 메모장 (Notepad) 만들기! - 심코딩

by 심코딩 2023. 3. 1.

요즘 블로그를 뜸하게 썼던 이유들이 여러가지가 있지만 가장 큰 것은 바로 어떤걸 업로드를 해야 할지 조금 블로그에 대한 권태기 아닌 권태기가 왔기 때문었습니다..

 

그래서 어떻게 해야하지 고민을 하다가 뭔가 내 자신이 동기가 부족해진것 같아 자신에게 동기를 부여하도록 했습니다!

 

코딩을 하는데에 있어 가장 큰 동기는 자신만의 프로젝트를 시작해보는거라구 생각합니다.

 

업무용 메모장 (Notepad) 파이썬으로 만들어 보기

 

아무래도 직장인이다 보니 직장에서 뭔가 내 업무를 더 효율적으로 할 수 있는 프로그램이 필요하다고 판단을 하였습니다.

 

기존 메모장 프로그램 (Smemo 등)과 같은 프로그램을 사용하고 있었지만 내 입맛대로 되는 프로그램들이 아니다 보니 가끔 상당히 불편하고, 아 이런기능이 있었다면 하는 생각을 많이 하곤 했습니다.

 

따라서 제가 스스로 메모장을 만들게 되었고, 여기서 계속해서 발전을 해 나갈 생각입니다.

제가 생각한 이 프로그램의 장점 및 개발방향은 아래와 같습니다.

 

  • 기본 UI 는 tkinter 보다는 PyQT를 통해 추후 비쥬얼적으로 더 나아갈 수 있도록 여지를 둘 것
  • 나만의 단축키를 통해 보다 효율적인 메모가 가능할 것
  • 유선상으로 통화를 하며 메모 할 것들을 메모 하되, 몇시에 이 메모를 했는지 나와야 할 것.
  • 계산이 필요할때 그냥 사칙연산을 입력하면 계산 해줄 것

마지막 계산 빼고는 생각보다 그렇게 어렵진 않았습니다. 코드는 아래와 같습니다.

 

메모장 (Notepad) 만드는 코드 알아보기

 

 

GitHub - s1mfo/Notepad_PyQT: Notepad for myself

Notepad for myself. Contribute to s1mfo/Notepad_PyQT development by creating an account on GitHub.

github.com

 

기본적으로 제 위 깃허브 사이트에 들어가면 모두 보실 수 있습니다. 깃허브 이용이 불편하신 분들을 위해 아래 코드도 공유 합니다.

 

from PyQt5.QtWidgets import QApplication, QTextBrowser, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtGui import QIcon, QFont
import sys
import time


class Window(QWidget) :
    
    def __init__ (self):
        super().__init__()

        self.title="Wokatoka Notepad"
        self.top = 400
        self.left = 400
        self.width = 400
        self.height = 600

        self.setFixedSize(self.width,self.height)
        self.setWindowTitle(self.title)
        self.setGeometry(self.top, self.left, self.width, self.height)
        self.setWindowIcon(QIcon('D:/Solo Coding/Projects/Notepad_PyQT/image/woka.png'))
    
        self.Ui()
    
    def Ui (self):
        
        self.browser = QTextBrowser()
        self.lineEdit = QLineEdit()

        vbox = QVBoxLayout()
        vbox.addWidget(self.browser)
        vbox.addWidget(self.lineEdit)

        self.setLayout(vbox)
        self.lineEdit.returnPressed.connect(self.updateBrowser)
        
    
    def updateBrowser(self):
        now = time
        now_time = now.strftime('%H:%M:%S')
        now_date = now.localtime().tm_mday
        now_month = now.localtime().tm_mon
        now_year = now.localtime().tm_year
        
        try:
            text = str(self.lineEdit.text ())
            self.browser.append("%s = <b>%s</b>" %(text, eval(text)))
            self.lineEdit.clear()
            
        except:
            if text == "*start":
                self.browser.append("<p style='font-size:16px'> <b>%s/%s/%s</b></p>" %(now_date,now_month,now_year))
                self.lineEdit.clear()
            elif text == "--":
                insert_line = "-------------------------------------------------------------------------------------------"
                self.browser.append("<p style= 'color:red'>%s</p>"%(insert_line))
                self.lineEdit.clear()
            else:
                self.browser.append("<b>[%s]</b> %s" %(now_time, text))
                self.lineEdit.clear()
                
          
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec()

 

앞으로의 모든 업데이트는 위 깃허브를 통해 진행할 예정입니다.

 

실행을 하면 아래와 같이 나옵니다.

실행장면

내가 원하는대로 단축키도 설정을 해보았습니다.

  • *start 입력 시 업무 시작으로 간주되어 현 날짜가 나옵니다. (추후 업무 격언도 넣고싶어 json을 미리 받아놨습니다)
  • -- 입력 시 구분선이 생깁니다.
  • 사칙연산을 넣을 시 자동 계산을 해줍니다. ex) 1+1 입력시 1+1 = 2 가 나옵니다

 

댓글