mirror of
https://github.com/EDeev/school_table.git
synced 2026-10-07 20:49:37 +03:00
Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| abbe0cb5e2 | |||
|
|
9cf8f6a01a | ||
| 4403827c26 | |||
| 4fe87b12ba |
4 changed files with 83 additions and 11 deletions
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
|
|
@ -16,10 +16,10 @@ jobs:
|
|||
python-version: "3.12"
|
||||
- run: pip install pyinstaller -r requirements.txt
|
||||
- name: Сборка .exe
|
||||
run: pyinstaller --onefile --windowed --icon image.ico --name SchoolTable main.py
|
||||
run: pyinstaller --onefile --windowed --icon image.ico --add-data "table.db;." --add-data "image.ico;." --name SchoolTable main.py
|
||||
- name: Архив с программой, пустой базой и иконкой
|
||||
run: Compress-Archive -Path dist/SchoolTable.exe, table.db, image.ico -DestinationPath SchoolTable-windows.zip
|
||||
- name: Файл в релиз
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: gh release upload "${{ github.ref_name }}" SchoolTable-windows.zip --clobber
|
||||
run: gh release upload "${{ github.ref_name }}" dist/SchoolTable.exe SchoolTable-windows.zip --clobber
|
||||
|
|
|
|||
10
README.en.md
10
README.en.md
|
|
@ -8,7 +8,7 @@
|
|||
A desktop student planner on PyQt5: a weekly timetable and dated notes that show up under the right day
|
||||
on their own. The interface is in Russian.
|
||||
|
||||
**Status:** coursework (2021), completed
|
||||
**Status:** coursework (Yandex Lyceum, 2021), completed
|
||||
|
||||

|
||||
|
||||
|
|
@ -26,9 +26,9 @@ on their own. The interface is in Russian.
|
|||
|
||||
## Running
|
||||
|
||||
A ready-made Windows build is `SchoolTable-windows.zip` in the
|
||||
[releases](https://github.com/EDeev/school_table/releases): unpack it and run `SchoolTable.exe` (keep
|
||||
`table.db` next to it).
|
||||
A ready-made Windows build is in the [releases](https://github.com/EDeev/school_table/releases):
|
||||
`SchoolTable.exe` — just run it (an empty `table.db` and the icon appear next to it on first start), or
|
||||
`SchoolTable-windows.zip` — the same with the database and icon in an archive.
|
||||
|
||||
From source:
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ python main.py
|
|||
|
||||
## License
|
||||
|
||||
Coursework (2021). The code is open for study; there is no separate license.
|
||||
Coursework (Yandex Lyceum, 2021). The code is open for study; there is no separate license.
|
||||
|
||||
## Author
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
Десктопный дневник школьника на PyQt5: расписание на неделю и заметки с датами, которые сами
|
||||
появляются под нужным днём.
|
||||
|
||||
**Статус:** учебный проект (2021), завершён
|
||||
**Статус:** учебный проект (Яндекс Лицей, 2021), завершён
|
||||
|
||||

|
||||
|
||||
|
|
@ -26,8 +26,9 @@
|
|||
|
||||
## Запуск
|
||||
|
||||
Готовая сборка для Windows — `SchoolTable-windows.zip` в [релизах](https://github.com/EDeev/school_table/releases):
|
||||
распакуйте и запустите `SchoolTable.exe` (база `table.db` должна лежать рядом).
|
||||
Готовая сборка для Windows — в [релизах](https://github.com/EDeev/school_table/releases): `SchoolTable.exe` — просто
|
||||
запустите (при первом запуске рядом появятся пустая база `table.db` и иконка), или `SchoolTable-windows.zip` — то же
|
||||
с базой и иконкой в архиве.
|
||||
|
||||
Из исходников:
|
||||
|
||||
|
|
@ -52,7 +53,7 @@ image.ico иконка
|
|||
|
||||
## Лицензия
|
||||
|
||||
Учебный проект (2021). Код открыт для изучения, отдельной лицензии нет.
|
||||
Учебный проект (Яндекс Лицей, 2021). Код открыт для изучения, отдельной лицензии нет.
|
||||
|
||||
## Автор
|
||||
|
||||
|
|
|
|||
71
main.py
71
main.py
|
|
@ -1,6 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime as dt
|
||||
import os
|
||||
import shutil
|
||||
import sqlite3
|
||||
import sys
|
||||
|
||||
|
|
@ -926,11 +927,76 @@ class Ui_MainWindow(object):
|
|||
i.setTabText(i.indexOf(j[0]), _translate("MainWindow", j[1]))
|
||||
|
||||
|
||||
def configure_accessibility(self):
|
||||
"""Provide accessible names and descriptions for assistive technologies."""
|
||||
table_names = {
|
||||
self.Mon_school: "Расписание на понедельник",
|
||||
self.Tue_school: "Расписание на вторник",
|
||||
self.Wed_school: "Расписание на среду",
|
||||
self.Thu_school: "Расписание на четверг",
|
||||
self.Fri_school: "Расписание на пятницу",
|
||||
self.Sat_school: "Расписание на субботу",
|
||||
self.Mon_note: "Заметки на понедельник",
|
||||
self.Tue_note: "Заметки на вторник",
|
||||
self.Wed_note: "Заметки на среду",
|
||||
self.Thu_note: "Заметки на четверг",
|
||||
self.Fri_note: "Заметки на пятницу",
|
||||
self.Sat_note: "Заметки на субботу",
|
||||
self.maintable: "Список заметок",
|
||||
}
|
||||
for table, name in table_names.items():
|
||||
table.setAccessibleName(name)
|
||||
table.setAccessibleDescription(
|
||||
"Таблица доступна с клавиатуры. Используйте стрелки для просмотра ячеек."
|
||||
)
|
||||
|
||||
field_names = {
|
||||
self.weekday1: "День недели для добавления предмета",
|
||||
self.object1: "Номер урока для добавления предмета",
|
||||
self.add_line: "Название нового предмета",
|
||||
self.choose_obj1: "Предмет для добавления в расписание",
|
||||
self.choose_obj2: "Предмет для переименования",
|
||||
self.upd_line: "Новое название предмета",
|
||||
self.choose_obj3: "Предмет для удаления",
|
||||
self.weekday3: "День недели для очистки урока",
|
||||
self.object3: "Номер урока для очистки",
|
||||
self.choose_obj4: "Предмет для выделения в расписании",
|
||||
self.choosedate: "Период показа заметок",
|
||||
self.choose: "Заметка для выполнения",
|
||||
self.write: "Текст новой заметки",
|
||||
self.date_1: "Дата и время новой заметки",
|
||||
self.choose_2: "Заметка для редактирования",
|
||||
self.write_2: "Новый текст заметки",
|
||||
self.date_2: "Новая дата и время заметки",
|
||||
}
|
||||
for widget, name in field_names.items():
|
||||
widget.setAccessibleName(name)
|
||||
|
||||
button_descriptions = {
|
||||
self.add_but: "Добавляет выбранный предмет в расписание.",
|
||||
self.del_but: "Удаляет выбранный предмет из списка предметов и из расписания.",
|
||||
self.upd_but: "Переименовывает выбранный предмет.",
|
||||
self.clear_but: "Очищает выбранный урок в расписании.",
|
||||
self.check_but1: "Выделяет выбранный предмет в расписании.",
|
||||
self.check_but2: "Снимает выделение выбранного предмета.",
|
||||
self.check_but3: "Очищает выделение предметов.",
|
||||
self.showing: "Показывает заметки за выбранный период.",
|
||||
self.complete: "Отмечает выбранную заметку как выполненную.",
|
||||
self.added: "Добавляет новую заметку.",
|
||||
self.demonstr: "Показывает выбранную заметку для редактирования.",
|
||||
self.updat: "Сохраняет изменения выбранной заметки.",
|
||||
}
|
||||
for button, description in button_descriptions.items():
|
||||
button.setAccessibleName(button.text())
|
||||
button.setAccessibleDescription(description)
|
||||
|
||||
|
||||
# ОСНОВНОЕ ТЕЛО ПРОГРАММЫ
|
||||
class MyWidget(QMainWindow, Ui_MainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setupUi(self) # uic.loadUi('rasp.ui', self)
|
||||
self.configure_accessibility()
|
||||
self.connection = sqlite3.connect("table.db")
|
||||
self.cursor = self.connection.cursor()
|
||||
|
||||
|
|
@ -1325,6 +1391,11 @@ class MyWidget(QMainWindow, Ui_MainWindow):
|
|||
if __name__ == '__main__':
|
||||
# table.db ищется рядом с программой (или с .exe), а не в текущей папке терминала
|
||||
os.chdir(os.path.dirname(sys.executable if getattr(sys, "frozen", False) else os.path.abspath(__file__)))
|
||||
if getattr(sys, "frozen", False):
|
||||
# одиночный .exe: пустая база и иконка вшиты внутрь и при первом запуске кладутся рядом
|
||||
for name in ("table.db", "image.ico"):
|
||||
if not os.path.exists(name):
|
||||
shutil.copy(os.path.join(sys._MEIPASS, name), name)
|
||||
app = QApplication(sys.argv)
|
||||
ex = MyWidget()
|
||||
ex.show()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue