@@ -26,15 +26,14 @@ from statapp.main_window import MainWindow
|
||||
|
||||
|
||||
def main():
|
||||
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
translator = QtCore.QTranslator(app)
|
||||
locale = QtCore.QLocale.system().name()
|
||||
path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
|
||||
translator.load(f'qt_{locale}', path)
|
||||
translator.load(f'qtbase_{locale}', path)
|
||||
app.installTranslator(translator)
|
||||
|
||||
window = MainWindow()
|
||||
window.show()
|
||||
return app.exec_()
|
||||
|
542
statapp/docs/README.html
Normal file
210
statapp/docs/README.md
Normal file
@@ -0,0 +1,210 @@
|
||||
<!--
|
||||
Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
|
||||
|
||||
This file is part of Statapp
|
||||
(see https://github.com/shizand/statapp).
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
# Руководство пользователя для программы "Statapp"
|
||||
|
||||
## Условные обозначения
|
||||
|
||||
`Взаимодействие` - так отображается интерфестные части приложения с которыми пользователь может и должен взаимодействовать. к тами относятся кнопки, пункты меню, окна приложения, страницы в моделировании и тд.
|
||||
|
||||
*Пример* - так отображаются комментарии или описания. Обычно используются в качестве подписей к картинкам.
|
||||
|
||||
***Параметр*** - так отображаются параметры, которые пользователь может получить в результате вычислений в приложении.
|
||||
|
||||
## Введение
|
||||
|
||||
"Statapp" — это программное решение для статистического анализа и регрессионного моделирования, позволяющее специалистам в области данных проводить глубокий анализ и создавать точные прогностические модели.
|
||||
|
||||
## Теоретические сведения
|
||||
|
||||
*-- В разработке --*
|
||||
|
||||
## Начало работы
|
||||
|
||||
### Генерация показателей
|
||||
|
||||
<hr>
|
||||
|
||||
### Генерация отклика
|
||||
|
||||
Перед тем как начать анализ, необходимо сгенерировать отклики, которые будут использоваться как зависимые переменные в моделях:
|
||||
|
||||
1. Перейдите в меню `Генерация показателей`.
|
||||
2. Выберите `Генерация отклика`.
|
||||
|
||||
После этого откроется окно `Генерация отклика`:
|
||||
|
||||
<image src="files/Генерация показателей - Генерация отклика.PNG">
|
||||
|
||||
*Пример пункта меню* `Генерация отклика`
|
||||
|
||||
3. Укажите необходимые параметры для генерации данных и нажмите кнопку `Сгенерировать`.
|
||||
|
||||
<image src="files/Окно - Генерация отклика.PNG" width=400>
|
||||
|
||||
*Пример окна* `Генерация отклика`
|
||||
|
||||
После этого окно должно закрыться и на `Белом листе` в `Главном окне` появится колонка со случайно сгенерированными данными отклика по заданным показателям.
|
||||
|
||||
<hr>
|
||||
|
||||
### Генерация фактора
|
||||
|
||||
После генерации откликов следует сгенерировать факторы, которые будут служить независимыми переменными. Для генерации факторов необходимо выполнить следующие шаги:
|
||||
|
||||
1. Перейдите в меню `Генерация показателей`.
|
||||
2. Выберите `Генерация фактора`.
|
||||
|
||||
После этого откроется окно `Генерация фактора`:
|
||||
|
||||
<image src="files/Генерация показателей - Генерация фактора.PNG">
|
||||
|
||||
*Пример пункта меню* `Генерация фактора`
|
||||
|
||||
3. Выберите нужный тип связи к отклику (прямая или обратная).
|
||||
4. Укажите оставшиеся параметры для генерации данных и нажмите кнопку `Сгенерировать`.
|
||||
|
||||
<image src="files/Окно - Генерация фактора.PNG" width=400>
|
||||
|
||||
*Пример окна* `Генерация отклика`
|
||||
|
||||
Можно добавлять несколько факторов.
|
||||
|
||||
<hr>
|
||||
|
||||
### Анализ данных
|
||||
|
||||
После генерации отклика и факторов можно приступать к анализу данных.
|
||||
|
||||
<hr>
|
||||
|
||||
### Дисперсионный анализ
|
||||
|
||||
1. Перейдите в меню `Анализ данных`.
|
||||
2. Выберите `Дисперсионный анализ`.
|
||||
|
||||
<image src="files/Анализ данных - Дисперсионный анализ.PNG">
|
||||
|
||||
*Пример пункта меню* `Дисперсионный анализ`
|
||||
|
||||
После этого откроется окно `Дисперсионный анализ`:
|
||||
|
||||
<image src="files/Окно - Дисперсионный анализ.PNG">
|
||||
|
||||
*Пример окна* `Дисперсионный анализ`
|
||||
|
||||
<hr>
|
||||
|
||||
### Корреляционный анализ
|
||||
|
||||
1. Перейдите в меню `Анализ данных`.
|
||||
2. Выберите `Корреляционный анализ`.
|
||||
|
||||
<image src="files/Анализ данных - Корреляционный анализ.PNG">
|
||||
|
||||
*Пример пункта меню* `Корреляционный анализ`
|
||||
|
||||
После этого откроется окно `Корреляционный анализ`:
|
||||
|
||||
<image src="files/Окно - Корреляционный анализ.PNG">
|
||||
|
||||
*Пример окна* `Корреляционный анализ`
|
||||
|
||||
<hr>
|
||||
|
||||
### Моделирование
|
||||
|
||||
После генерации отклика и факторов можно перейти к построению регрессионных моделей.
|
||||
|
||||
Здесь вы можете увидеть параметры модели, её характеристики, прогноз и отклонения, а также график прогноза и отклонения.
|
||||
|
||||
1. Перейдите на вкладку `Моделирование`.
|
||||
2. Выберите тип модели для построения: `Линейный полином`, `Квадратичный полином` или `Преобразования`.
|
||||
|
||||
<image src="files/Моделирование - Линейный полином.PNG">
|
||||
|
||||
*Пример список пунктов меню* `Моделирование`
|
||||
|
||||
На странице `Модель` любого окна из `Моделирование` можно увидеть данные ***Коэффициент регрессии*** и ***Коэффициент значимости*** в виде таблицы для отклика и каждого из факторов. В нижней части окна располагаются вычисленные значения для параметров: ***Остаточная дисперсия***, ***Остаточная дисперсия (масштабированная)***, ***F1 - отношение Фишера***, ***Коэффициент множественной детерминации***,
|
||||
|
||||
<image src="files/Окно - Полином (Линейный полином).PNG">
|
||||
|
||||
*Пример страницы* `Модель` *окна* `Линейный полином`
|
||||
|
||||
На странице `Прогноз` любого окна из `Моделирование` можно увидеть значения ***Прогноза*** и ***Отклонения*** для каждого ранее сгенерированного значения ***Отклика***.
|
||||
|
||||
<image src="files/Окно - Полином - Прогноз.PNG">
|
||||
|
||||
*Пример страницы* `Прогноз` *окна* `Линейный полином`
|
||||
|
||||
На странице `График` любого окна из `Моделирование` можно увидеть график ***Прогноза*** (график) и ***Отклонения*** (точки).
|
||||
|
||||
<image src="files/Окно - Полином - График.PNG">
|
||||
|
||||
*Пример страницы* `График` *окна* `Линейный полином`
|
||||
|
||||
При необходимости, в окне `Моделирование` - `Преобразования` для каждого фактора вы можете выбрать одно из доступных преобразований.
|
||||
|
||||
<image src="files/Окно - Полином (Преобразования).PNG">
|
||||
|
||||
*Пример окна* `Преобразования`
|
||||
|
||||
Для выбора преобразования для определенного фактора необходимо выполнить следующие шаги:
|
||||
|
||||
1. Перейдите на страницу `Модель` в окне `Преобразования`.
|
||||
2. Дважды нажмите на нужную ячейку в колонке ***Преобразования***.
|
||||
3. Выберите необходимое преобразование из выпадающего списка.
|
||||
|
||||
<image src="files/Преобразования - Выбор преобразования.PNG">
|
||||
|
||||
*Пример списка выбора* ***Преобразования*** *фактора в окне* `Преобразования`
|
||||
|
||||
*Комментарий: если значения не персчитались попробуйте снять выделение с ячейки, путем нажатия на другую ячейку*
|
||||
|
||||
<hr>
|
||||
|
||||
### Сохранение и открытие файла
|
||||
|
||||
Сгенерированные значения ***Отклика*** и ***Фактора*** из таблицы в `Главном окне` можно сохранить или зугрузить из файла ***.txt*** и ***.csv***.
|
||||
|
||||
### Сохранение файла
|
||||
|
||||
1. Перейдите в меню `Файл`.
|
||||
2. Выберите `Сохранить`.
|
||||
|
||||
<image src="files/Файл - Сохранить.PNG">
|
||||
|
||||
*Пример пункта меню* `Сохранить файл`
|
||||
|
||||
3. Выберите путь сохранения и тип файла и нажмите кнопку `Сохранить`.
|
||||
|
||||
Теперь файл будет сохранен по указаному вами пути, его можно переместить куда необходимо и при необходимости загрузить обратно в приложение.
|
||||
|
||||
### Открытие файла
|
||||
|
||||
1. Перейдите в меню `Файл`.
|
||||
2. Выберите `Открыть`.
|
||||
|
||||
<image src="files/Файл - Открыть.PNG">
|
||||
|
||||
*Пример пункта меню* `Открыть файл`
|
||||
|
||||
3. Выберите путь до открываемого файла и нажмите кнопку `Открыть`.
|
||||
|
||||
Приложение загрузит нужный вам файл, и при необходимости спросит нужно ли сохранять ваши текущие данные.
|
BIN
statapp/docs/README.pdf
Normal file
BIN
statapp/docs/files/Анализ данных - Дисперсионный анализ.PNG
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
statapp/docs/files/Анализ данных - Корреляционный анализ.PNG
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
statapp/docs/files/Генерация показателей - Генерация отклика.PNG
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
statapp/docs/files/Генерация показателей - Генерация фактора.PNG
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
statapp/docs/files/Моделирование - Линейный полином.PNG
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
statapp/docs/files/Окно - Генерация отклика.PNG
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
statapp/docs/files/Окно - Генерация фактора.PNG
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
statapp/docs/files/Окно - Дисперсионный анализ.PNG
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
statapp/docs/files/Окно - Корреляционный анализ.PNG
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
statapp/docs/files/Окно - Полином (Линейный полином).PNG
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
statapp/docs/files/Окно - Полином (Преобразования).PNG
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
statapp/docs/files/Окно - Полином - График.PNG
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
statapp/docs/files/Окно - Полином - Прогноз.PNG
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
statapp/docs/files/Преобразования - Выбор преобразования.PNG
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
statapp/docs/files/Файл - Открыть.PNG
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
statapp/docs/files/Файл - Сохранить.PNG
Normal file
After Width: | Height: | Size: 2.5 KiB |
36
statapp/docs/grip.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
|
||||
|
||||
This file is part of Statapp
|
||||
(see https://github.com/shizand/statapp).
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#preview-page {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
#readme {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#readme > .Box-header {
|
||||
border: none;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#readme > .Box-body {
|
||||
border: none;
|
||||
}
|
@@ -33,6 +33,7 @@ from statapp.about_window import AboutWindow
|
||||
from statapp.models.fileslc_model import FileSLCModel
|
||||
from statapp.polynoms.squared_polynom_window import SquaredPolynomWindow
|
||||
from statapp.ui.ui_main_window import Ui_MainWindow
|
||||
from statapp.usage_window import UsageWindow
|
||||
from statapp.utils import buildMessageBox, addIcon, FloatDelegate, onError
|
||||
from statapp.variance_analysis import VarianceAnalysisWindow
|
||||
from statapp.correlation_analysis import CorrelationAnalysisWindow
|
||||
@@ -61,6 +62,7 @@ class MainWindow(QMainWindow):
|
||||
]
|
||||
|
||||
self.aboutWindow = None
|
||||
self.usageWindow = None
|
||||
|
||||
self.isDataChanged = False
|
||||
self.model = InputValuesModel()
|
||||
@@ -210,6 +212,11 @@ class MainWindow(QMainWindow):
|
||||
self.aboutWindow = AboutWindow()
|
||||
self.aboutWindow.show()
|
||||
|
||||
@Slot()
|
||||
def on_usageaction_triggered(self):
|
||||
self.usageWindow = UsageWindow()
|
||||
self.usageWindow.show()
|
||||
|
||||
@Slot()
|
||||
def on_varianceAnalysisAction_triggered(self):
|
||||
try:
|
||||
|
@@ -40,7 +40,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>21</height>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="filemenu">
|
||||
@@ -77,6 +77,7 @@
|
||||
<property name="title">
|
||||
<string>Справка</string>
|
||||
</property>
|
||||
<addaction name="usageaction"/>
|
||||
<addaction name="aboutmenuaction"/>
|
||||
</widget>
|
||||
<addaction name="filemenu"/>
|
||||
@@ -141,6 +142,11 @@
|
||||
<string>Преобразования</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="usageaction">
|
||||
<property name="text">
|
||||
<string>Использование</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
6
statapp/ui/ui_main_window.py
generated
@@ -60,6 +60,8 @@ class Ui_MainWindow(object):
|
||||
self.squaredPolynomAction.setObjectName(u"squaredPolynomAction")
|
||||
self.transformPolynomAction = QAction(MainWindow)
|
||||
self.transformPolynomAction.setObjectName(u"transformPolynomAction")
|
||||
self.usageaction = QAction(MainWindow)
|
||||
self.usageaction.setObjectName(u"usageaction")
|
||||
self.centralwidget = QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName(u"centralwidget")
|
||||
self.gridLayout = QGridLayout(self.centralwidget)
|
||||
@@ -79,7 +81,7 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QMenuBar(MainWindow)
|
||||
self.menubar.setObjectName(u"menubar")
|
||||
self.menubar.setGeometry(QRect(0, 0, 800, 21))
|
||||
self.menubar.setGeometry(QRect(0, 0, 800, 22))
|
||||
self.filemenu = QMenu(self.menubar)
|
||||
self.filemenu.setObjectName(u"filemenu")
|
||||
self.generatemenu = QMenu(self.menubar)
|
||||
@@ -110,6 +112,7 @@ class Ui_MainWindow(object):
|
||||
self.modelmenu.addAction(self.linearPolynomAction)
|
||||
self.modelmenu.addAction(self.squaredPolynomAction)
|
||||
self.modelmenu.addAction(self.transformPolynomAction)
|
||||
self.helpmenu.addAction(self.usageaction)
|
||||
self.helpmenu.addAction(self.aboutmenuaction)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
@@ -130,6 +133,7 @@ class Ui_MainWindow(object):
|
||||
self.linearPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None))
|
||||
self.squaredPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None))
|
||||
self.transformPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f", None))
|
||||
self.usageaction.setText(QCoreApplication.translate("MainWindow", u"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435", None))
|
||||
self.label.setText(QCoreApplication.translate("MainWindow", u"\u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0414\u0410\u041d\u041d\u042b\u0415", None))
|
||||
self.filemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0424\u0430\u0439\u043b", None))
|
||||
self.generatemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439", None))
|
||||
|
56
statapp/ui/ui_usage_window.py
generated
Normal file
@@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
|
||||
#
|
||||
# This file is part of Statapp
|
||||
# (see https://github.com/shizand/statapp).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'usage_window.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 5.15.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide2.QtCore import *
|
||||
from PySide2.QtGui import *
|
||||
from PySide2.QtWidgets import *
|
||||
|
||||
|
||||
class Ui_UsageWindow(object):
|
||||
def setupUi(self, UsageWindow):
|
||||
if not UsageWindow.objectName():
|
||||
UsageWindow.setObjectName(u"UsageWindow")
|
||||
UsageWindow.resize(400, 300)
|
||||
self.gridLayout = QGridLayout(UsageWindow)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.browserContainer = QVBoxLayout()
|
||||
self.browserContainer.setObjectName(u"browserContainer")
|
||||
|
||||
self.gridLayout.addLayout(self.browserContainer, 0, 0, 1, 1)
|
||||
|
||||
|
||||
self.retranslateUi(UsageWindow)
|
||||
|
||||
QMetaObject.connectSlotsByName(UsageWindow)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, UsageWindow):
|
||||
UsageWindow.setWindowTitle(QCoreApplication.translate("UsageWindow", u"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435", None))
|
||||
# retranslateUi
|
24
statapp/ui/usage_window.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UsageWindow</class>
|
||||
<widget class="QDialog" name="UsageWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Использование</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="browserContainer"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
40
statapp/usage_window.py
Normal file
@@ -0,0 +1,40 @@
|
||||
#
|
||||
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
|
||||
#
|
||||
# This file is part of Statapp
|
||||
# (see https://github.com/shizand/statapp).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from PySide2.QtCore import QUrl
|
||||
from PySide2.QtWebEngineWidgets import QWebEngineView
|
||||
from PySide2.QtWidgets import QMainWindow, QVBoxLayout, QWidget
|
||||
|
||||
from statapp.utils import addIcon, resourcePath
|
||||
|
||||
class UsageWindow(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("Использование")
|
||||
addIcon(self)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
|
||||
self.browser = QWebEngineView()
|
||||
layout.addWidget(self.browser)
|
||||
self.browser.load(QUrl.fromLocalFile(resourcePath("docs/README.html")))
|
||||
|
||||
widget = QWidget()
|
||||
widget.setLayout(layout)
|
||||
self.setCentralWidget(widget)
|