So, this is a note-taking application written with the PyQt5 library.
Each user can sign in and use their personal notes.
Sign up
Recovery their password
Then, the user can see his profile
There are 3 types of the notes:
- Text notes
- Table notes
- Calendar notes
The user can create an unlimited number of note folders.
Each folder has 10 pages for editing: you can write some text or change the name of the page on which you write. Click "save page" to save your edits.
Also user can load his .csv files in this app. You can create an unlimited number of note tables.
Load your .csv files with appropriate configuration of the file. Follow this link to understand what setting is responsible for CSV File Reading and Writing in Python.
A telegram bot written on the pyTelegramBotAPI api is integrated into my project. So, you can set some notifications in these notes to receive them in the bot.
- Firstly, follow this link YaNotes_bot and click "/start".
- I have read too little "this" to understand how to poll bot asynchronously with PyQt5. That's why you need to get your chat id and enter it after pressing the button "Connect tg bot".
- You can get chat id with username_to_id_bot or other bots that can do it.
- Do not forget to choose your GMT!!!
When notes began to refer to a date in the past, they are automatically deleted.
1.1 Run this command
git clone https://github.com/Prrromanssss/YaNotes-GUI.git
2.1 First of all, from root directory run this command
python -m venv venv
2.2 Then run this command to activate venv
source venv/bin/activate
.\venv\Scripts\activate
3.3 Run this command
pip install -r requirements.txt
4.1 Generate file '.env' in root directory with structure specified in the 'examples/test-env.txt' file
5.1 Run this command
python main.py
This project uses the sqlite3 database.
Test database for work is presented in the YaNotes.sqlite3 file.
In this project I tried to stick to the MVC software architectural pattern or MTV in python. The project also works asynchronously with asyncio and asyncqt.
I placed all PyQt5 widgets in the apps folder. Each window has its own folder corresponding to its name. In which this structure is presented:
- templates: All design files (.ui, .py) are located in templates folder.
- models:
This file presents work with the database, according to this structure:
It was better to write a simple ORM, but I didn’t have enough time :(
import sqlite3 from settings import DATABASE class TableNameModel: @staticmethod def description_of_the_request(*, arg1, arg2): con = sqlite3.connect(DATABASE) request = ''' Some SQL request ''' con.execute(request) con.commit()
- widgets aka views: The rest of the files ending in _widget are allegedly views that connect to load data from the database into templates, and they also contain all the functionality of this window.
- validators
All entities associated with the telegram bot are in the bot folder. It should be noted that the api token for the bot is a virtual environment variable.
- media: User avatars are stored in this folder
- tables: User .csv files are stored in this folder
You can find some examples in the examples folder.













