Ошибка при работе таймера на dataEdit
Есть код ui и логики:
https://drive.google.com/file/d/1TRd-y_mYmHWmwXz7Z-mDB-mrtYiqutg0/view?usp=sharing
https://drive.google.com/file/d/1qggoUxzg2QVrIOmXSNTFOcb2Pba8nR-I/view?usp=sharing
https://disk.yandex.ru/d/jxc2JZObIgpYKQ
В ней dataEdit работает как таймер, если таймер истекает вылезает уведомление. Но, даже если таймер не истек все ровно вылезет вот такое уведомление:
Которое скорее всего исходит от нижнего dataEdit но, изменение его названия не привело к результату.
Ответы (3 шт):
Я отметил для вас строки, которые надо изменить в main.py.
Я опубликую модуль ui_lke2.ui во втором ответе.
Изменения в нем сделаны только на странице 'Дополнительные параметры'
и только в части имен объектов для lineEdit и dateEdit.
main.py
import sys
from datetime import datetime
from PyQt5 import uic
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.Qt import *
from PyQt5.QtCore import QSettings, QDateTime, QDate
from docxtpl import DocxTemplate
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
class TimeAxisItem(pg.AxisItem):
def tickStrings(self, values, scale, spacing):
print(values, '\n', scale, '\n', spacing)
return [datetime.fromtimestamp(value) for value in values]
CONFIG_FILE_NAME = 'config_q1329659.ini'
class Widget(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("ui_lke2.ui", self)
# Добавить/удалить строку в tableWidget_2
self.pushButton_7.clicked.connect(self.buttonAdd)
self.pushButton_8.clicked.connect(self.buttonDelete)
# Добавить/удалить строку в tableWidget_3
self.pushButton_9.clicked.connect(self.buttonAdd_2)
self.pushButton_10.clicked.connect(self.buttonDelete_2)
# Сохранить данные из таблицы tableWidget_3
self.pushButton.clicked.connect(self.buttonSave)
# Создания графиков (Ph,Fe, CO2)
self.pushButton_11.clicked.connect(self.buttonChart_Ph)
self.pushButton_3.clicked.connect(self.check_date)
for row in range(self.tableWidget_3.rowCount()):
date_from = QtWidgets.QDateTimeEdit()
date_from.setDateTime(
QtCore.QDateTime(QtCore.QDate(2021, 8, 26),
QtCore.QTime(15, 12, 33))
)
self.tableWidget_3.setCellWidget(row, 0, date_from)
for row in range(self.tableWidget_3.rowCount()):
date_from = QDateTimeEdit()
date_from.setDateTime(
QDateTime(QDate(2021, 9, 2))
)
date_from.dateTimeChanged.connect(
lambda dateTime, row=row: self.date_changed(dateTime, row))
self.tableWidget_3.setCellWidget(row, 0, date_from)
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self._date = QDate.currentDate()
self.listLineEdit = self.findChildren(QtWidgets.QLineEdit)
self.listDateEdit = self.findChildren(QtWidgets.QDateEdit)
self.load_settings()
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.dateTime0 = self.tableWidget_3.cellWidget(0, 0).dateTime()
# Расчет времени от начального значения
def date_changed(self, dateTime, row):
if row == 0:
self.dateTime0 = self.tableWidget_3.cellWidget(row, 0).dateTime()
for row in range(1, self.tableWidget_3.rowCount()):
dateTime2 = self.tableWidget_3.cellWidget(row, 0).dateTime()
item = QTableWidgetItem()
item.setData(Qt.DisplayRole,
self.dateTime0.secsTo(dateTime2) / 60. / 60.)
self.tableWidget_3.setItem(row, 1, item)
return
dateTime2 = self.tableWidget_3.cellWidget(row, 0).dateTime()
item = QTableWidgetItem()
item.setData(Qt.DisplayRole,
self.dateTime0.secsTo(dateTime2) / 60. / 60.)
self.tableWidget_3.setItem(row, 1, item)
# Кнопка дабовляющая строку в таблицу tableWidget_2
def buttonAdd(self):
rowPosition = self.tableWidget_2.rowCount()
self.tableWidget_2.insertRow(rowPosition)
# Кнопка удаляющая строку в таблицу tableWidget_2
def buttonDelete(self):
if self.tableWidget_2.rowCount() > 0:
self.tableWidget_2.removeRow(self.tableWidget_2.rowCount() - 1)
# Кнопка дабовляющая строку в таблицу tableWidget_3
def buttonAdd_2(self):
rowPosition = self.tableWidget_3.rowCount()
self.tableWidget_3.insertRow(rowPosition)
date_from = QtWidgets.QDateTimeEdit()
dateTime = QtCore.QDateTime().currentDateTime()
date_from.setDateTime(dateTime)
date_from.dateTimeChanged.connect(
lambda dateTime, row=rowPosition:
self.date_changed(dateTime, row))
self.tableWidget_3.setCellWidget(rowPosition, 0, date_from)
# Кнопка удаляющая строку в таблицу tableWidget_3
def buttonDelete_2(self):
if self.tableWidget_3.rowCount() > 0:
self.tableWidget_3.removeRow(self.tableWidget_3.rowCount() - 1)
# Сохранение данных из tableWidget_3
def buttonSave(self):
rows = self.tableWidget_3.rowCount()
cols = self.tableWidget_3.columnCount()
data_for_word = []
for row in range(rows):
tmp = []
for col in range(cols):
if col:
item = self.tableWidget_3.item(row, col)
if col == 1:
item = f'{float(item.text()):.0f}' if item else '0'
else:
item = item.text() if item else '0'
else:
item = self.tableWidget_3.cellWidget(row, 0). \
dateTime().toString('dd.MM.yyyy hh:mm')
tmp.append(item)
data_for_word.append(tmp)
for i in data_for_word:
print(i)
self.buttonLoader(data_for_word)
# Загрузка данных в шаблон Word
def buttonLoader(self, data):
data_for_word = []
for item in data:
if any(item):
data_for_word.append({
"data": item[0],
"time": item[1],
"ph": item[2],
"ph2": item[3],
"fe": item[4],
"pm": item[5],
"co2": item[6],
"pm2": item[7],
"pm3": item[8]
})
print()
for i in data_for_word: print(i)
doc = DocxTemplate('test_word.docx')
context = {
'tbl_contents': data_for_word
}
doc.render(context)
doc.save('test2.docx')
# Построение графика Ph
def buttonChart_Ph(self):
data_for_word = []
rows = self.tableWidget_3.rowCount()
for row in range(rows):
item_N2 = self.tableWidget_3.item(row, 1)
_data_N2 = item_N2.data(Qt.DisplayRole) if item_N2 else '0'
item_N3 = self.tableWidget_3.item(row, 2)
_data_N3 = item_N3.data(Qt.DisplayRole) if item_N3 else '0'
data_for_word.append([_data_N2, _data_N3])
self.x, self.y = [], []
for x, y in data_for_word:
print(f'x={x}; y={y}')
self.x.append(float(x))
self.y.append(float(y))
self.widget = pg.PlotWidget()
pen = pg.mkPen(color=(255, 0, 0), width=2)
self.widget.plot(
x=self.x,
y=self.y, pen=pen, symbol='+'
)
w = self.findChild(PlotWidget, 'widget')
print(f'w --> {w}')
if w:
w.deleteLater()
self.gridLayout_8.addWidget(
self.widget,
0, 0, 1, 1,
alignment=Qt.AlignCenter
)
# Фиксация размера widget
self.widget.setFixedSize(280, 238)
# Смена цвета графика на белый
self.widget.setBackground('w')
# Название графика widget
self.widget.setTitle("Ph", color="b", size="12pt")
# Добовляются названия осей координат
styles = {"color": "#f00", "font-size": "12px"}
self.widget.setLabel("left", "Ph, ед.Ph", **styles)
self.widget.setLabel("bottom", "Hour(H)", **styles)
self.widget.showGrid(x=True, y=True)
self.buttonChart_Fe()
# Построение графика Fe
def buttonChart_Fe(self):
data_for_word = []
rows = self.tableWidget_3.rowCount()
for row in range(rows):
item_N2 = self.tableWidget_3.item(row, 1)
_data_N2 = item_N2.data(Qt.DisplayRole) if item_N2 else '0'
item_N3 = self.tableWidget_3.item(row, 4)
_data_N3 = item_N3.data(Qt.DisplayRole) if item_N3 else '0'
data_for_word.append([_data_N2, _data_N3])
self.x, self.y = [], []
for x, y in data_for_word:
print(f'x={x}; y={y}')
self.x.append(float(x))
self.y.append(float(y))
self.widget_2 = pg.PlotWidget()
pen = pg.mkPen(color=(0, 255, 111), width=2)
self.widget_2.plot(
x=self.x,
y=self.y, pen=pen, symbol='+'
)
w = self.findChild(PlotWidget, 'widget')
print(f'w --> {w}')
if w:
w.deleteLater()
self.gridLayout_10.addWidget(
self.widget_2,
0, 0, 1, 1,
alignment=Qt.AlignCenter
)
# Фиксация размера widget
self.widget_2.setFixedSize(280, 238)
# Смена цвета графика на белый
self.widget_2.setBackground('w')
# Название графика widget
self.widget_2.setTitle("Fe", color="b", size="12pt")
# Добовляются названия осей координат
styles = {"color": "#f00", "font-size": "12px"}
self.widget_2.setLabel("left", "C(Fe общ.), мг/дм3", **styles)
self.widget_2.setLabel("bottom", "Hour(H)", **styles)
self.widget_2.showGrid(x=True, y=True)
self.buttonChart_CO2()
# Построение графика CO2
def buttonChart_CO2(self):
data_for_word = []
rows = self.tableWidget_3.rowCount()
for row in range(rows):
item_N2 = self.tableWidget_3.item(row, 1)
_data_N2 = item_N2.data(Qt.DisplayRole) if item_N2 else '0'
item_N3 = self.tableWidget_3.item(row, 6)
_data_N3 = item_N3.data(Qt.DisplayRole) if item_N3 else '0'
data_for_word.append([_data_N2, _data_N3])
self.x, self.y = [], []
for x, y in data_for_word:
print(f'x={x}; y={y}')
self.x.append(float(x))
self.y.append(float(y))
self.widget_3 = pg.PlotWidget()
pen = pg.mkPen(color=(0, 0, 255), width=2)
self.widget_3.plot(
x=self.x,
y=self.y, pen=pen, symbol='+'
)
w = self.findChild(PlotWidget, 'widget')
print(f'w --> {w}')
if w:
w.deleteLater()
self.gridLayout_11.addWidget(
self.widget_3,
0, 0, 1, 1,
alignment=Qt.AlignCenter
)
# Фиксация размера widget
self.widget_3.setFixedSize(280, 238)
# Смена цвета графика на белый
self.widget_3.setBackground('w')
# Название графика widget
self.widget_3.setTitle("CO2", color="b", size="12pt")
# Добовляются названия осей координат
styles = {"color": "#f00", "font-size": "12px"}
self.widget_3.setLabel("left", "C(CO2), мг/дм3", **styles)
self.widget_3.setLabel("bottom", "Hour(H)", **styles)
self.widget_3.showGrid(x=True, y=True)
self.buttonChart_PhFe()
# Построение графиков Ph и Fe
def buttonChart_PhFe(self):
data_for_word = []
data_for_word_2 = []
rows = self.tableWidget_3.rowCount()
for row in range(rows):
item_N2 = self.tableWidget_3.item(row, 1)
_data_N2 = item_N2.data(Qt.DisplayRole) if item_N2 else '0'
item_N3 = self.tableWidget_3.item(row, 2)
_data_N3 = item_N3.data(Qt.DisplayRole) if item_N3 else '0'
data_for_word.append([_data_N2, _data_N3])
item_N5 = self.tableWidget_3.item(row, 4)
_data_N5 = item_N5.data(Qt.DisplayRole) if item_N5 else '0'
data_for_word_2.append([_data_N2, _data_N5])
print(f'data_for_word = {data_for_word}')
print(f'data_for_word_2 = {data_for_word_2}')
self.x, self.y = [], []
for x, y in data_for_word:
print(f'x={x}; y={y}')
self.x.append(float(x))
self.y.append(float(y))
self.widget_4 = pg.PlotWidget()
pen = pg.mkPen(color=(255, 0, 0), width=2)
self.widget_4.plot(
x=self.x,
y=self.y, pen=pen, symbol='+'
)
w = self.findChild(PlotWidget, 'widget')
if w: w.deleteLater()
self.gridLayout_12.addWidget(
self.widget_4,
0, 0, 1, 1, alignment=Qt.AlignCenter
)
self.widget_4.setFixedSize(280, 238)
self.widget_4.setBackground('w')
self.widget_4.setTitle("Ph / Fe", color="b", size="12pt")
styles = {"color": "#f00", "font-size": "12px"}
self.widget_4.setLabel("left", "Ph, ед.Ph / C(Fe общ.), мг/дм3", **styles)
self.widget_4.setLabel("bottom", "Hour(H)", **styles)
self.widget_4.showGrid(x=True, y=True)
self.x, self.y = [], []
for x, y in data_for_word_2:
print(f'x={x}; y={y}')
self.x.append(float(x))
self.y.append(float(y))
pen = pg.mkPen(color=(0, 255, 111), width=2)
self.widget_4.plot(
x=self.x,
y=self.y, pen=pen, symbol='+'
)
# ???
''' ??????????????????????????????????????????????????????
self._date = QDate.currentDate()
self.listLineEdit = self.findChildren(QtWidgets.QLineEdit)
self.listDateEdit = self.findChildren(QtWidgets.QDateEdit)
self.load_settings()
'''
# !!! lineEdit_dop_xxx <---> dateEdit_dop_xxx
def check_date(self):
self.x_y()
listLineEdit = self.findChildren(QtWidgets.QLineEdit)
_dict = {}
for lineEdit in listLineEdit:
obj = lineEdit.objectName()
# if obj[0:9] == 'lineEdit_':
if obj[0:13] == 'lineEdit_dop_': # +++
# key = obj[9:] # lineEdit_3 --> '3'
key = obj[13:] # lineEdit_dop_3 --> '3' # +++
_dict[key] = lineEdit.text()
#print(_dict)
# !!! lineEdit_dop_xxx <---> dateEdit_dop_xxx
listDateEdit = self.findChildren(QtWidgets.QDateEdit)
for dateEdit in listDateEdit:
if dateEdit.objectName()[0:13] == 'dateEdit_dop_': # +++
# ---->
if self._date >= dateEdit.date():
# key = dateEdit.objectName()[9:]
key = dateEdit.objectName()[13:] # +++
msgBox = QtWidgets.QMessageBox(self)
msgBox.setWindowTitle("ВНИМАНИЕ")
msgBox.setIcon(QtWidgets.QMessageBox.Warning)
msgBox.setText(
'Пришло время, делайте что-нибудь!<br>'
f'Дата окончания: {dateEdit.date().toString("dd:MM:yyyy")}<br>'
f'Информация : {_dict[key]}<br>'
)
msgBox.move(self.x, self.y)
self.y += 100 # 150
msgBox.show()
def x_y(self):
self.x = self.pos().x() + 650 # + 650
self.y = self.pos().y()
def save_settings(self):
settings = QSettings(CONFIG_FILE_NAME, QSettings.IniFormat)
settings.setValue('Geometry', self.saveGeometry())
settings.setValue('WindowState', self.saveState())
for lineEdit in self.listLineEdit:
try: # +++
obj = lineEdit.objectName()
settings.setValue(obj, lineEdit.text())
except: # +++
pass # +++
for dateEdit in self.listDateEdit:
obj = dateEdit.objectName()
settings.setValue(obj, dateEdit.date())
def load_settings(self):
settings = QSettings(CONFIG_FILE_NAME, QSettings.IniFormat)
geometry = settings.value('Geometry')
if geometry:
self.restoreGeometry(geometry)
state = settings.value('WindowState')
if state:
self.restoreState(state)
for lineEdit in self.listLineEdit:
obj = lineEdit.objectName()
lineEdit.setText(settings.value(obj, ""))
for dateEdit in self.listDateEdit:
obj = dateEdit.objectName()
_date = settings.value(obj, QDate.currentDate())
dateEdit.setDate(_date)
def closeEvent(self, e):
self.save_settings()
super().closeEvent(e)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle("Windows")
app.setFont(QtGui.QFont("Times", 10))
ex = Widget()
ex.setWindowTitle("SAFTD version alfa 0.00.30")
ex.setFixedSize(640, 600)
ex.show()
sys.exit(app.exec_())
ПРОДОЛЖЕНИЕ ОТВЕТА.
Внимание, чтобы все корректно работало, для всплывающих сообщений:
1.Все объекты должны иметь objectName.
2.Встроке lineEdit и dateEdit имена объектов должны соответствовать
следующим правилам:
- для первой строки
'lineEdit_dop_1'<--->'dateEdit_dop_1' - для второй строки
'lineEdit_dop_2'<--->'dateEdit_dop_2' - и т.д.
ui_lke2.ui часть 1 (строки 1 - 480)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<author>KB ORBIT SOFTWARE by Alexandrov Andrey Sergeevich</author>
<class>SAFTD</class>
<widget class="QMainWindow" name="SAFTD">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>640</width>
<height>590</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Основные параметры</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Текстовые данные</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="11" column="0">
<widget class="QLineEdit" name="lineEdit_6"/>
</item>
<item row="15" column="0">
<widget class="QLineEdit" name="lineEdit_8"/>
</item>
<item row="13" column="0">
<widget class="QLineEdit" name="lineEdit_7"/>
</item>
<item row="5" column="0">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Конец проведения испытаний</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Дата заявки</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Номер заявки</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Начало проведения испытаний</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Дата протокола</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Обьект испытания, ориентация</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Номер протокола</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Маркировка</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Сохранение файла</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit_11"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Имя сохраняемого файла</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Директория сохранения файла</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="lineEdit_10"/>
</item>
<item>
<widget class="QToolButton" name="toolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Сохранить как...</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Экспорт файла</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="5" column="0">
<widget class="QComboBox" name="comboBox">
<item>
<property name="text">
<string>(Не выбранно)</string>
</property>
</item>
<item>
<property name="text">
<string>PDF</string>
</property>
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="lineEdit_12"/>
</item>
<item>
<widget class="QToolButton" name="toolButton_2">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Имя сохраняемого файла</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit_13"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Директория сохранения файла</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Экспортировать как...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Дополнительные параментры</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7">
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Запись дополнительных данных</string>
</property>
<layout class="QGridLayout" name="gridLayout_9">
<item row="0" column="2">
<widget class="QDateEdit" name="dateEdit_19"/>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>Загрузить/обновить данные</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Установить общую дату окончания срока действия</string>
</property>
</widget>
</item>
<item row="0" column="1" rowspan="2">
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_2">
<property name="text">
<string>Отключить проверку даты</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_6">
<item row="5" column="0">
<widget class="QLineEdit" name="lineEdit_dop_3"/>
</item>
<item row="7" column="0">
<widget class="QLineEdit" name="lineEdit_dop_4"/>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit_dop_2"/>
</item>
<item row="17" column="0">
<widget class="QLineEdit" name="lineEdit_dop_9"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Весы электронные HR-250А, зав. № 6А7602252</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLineEdit" name="lineEdit_dop_6"/>
</item>
<item row="13" column="0">
<widget class="QLineEdit" name="lineEdit_dop_7"/>
</item>
<item row="9" column="0">
<widget class="QLineEdit" name="lineEdit_dop_5"/>
</item>
<item row="15" column="0">
<widget class="QLineEdit" name="lineEdit_dop_8"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Весы лабораторные МТ 1,5В1ЖА-0/НК(0,01), 2012 г</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Преобразователь ионометрический И-510, 2017 г</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Штангенциркуль цифровой ШЦЦ-11-250, 2014 г</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Электрод стеклянный лабораторный комбинированный ЭСЛК-01.7 2017 г</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_21">
<property name="text">
<string>Термостат 3 жидкостный ВТ25-2 серии МАСТЕР</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Термостат 1 жидкостный ВТ25-2 серии МАСТЕР</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_20">
<property name="text">
<string>Термостат 2 жидкостный ВТ25-2 серии МАСТЕР</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit_dop_1"/>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_30">
<property name="text">
<string>Термостат 4 жидкостный ВТ25-2 серии МАСТЕР</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_32">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_34">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="label_33">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_35">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="label_36">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLabel" name="label_37">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QLabel" name="label_38">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QLabel" name="label_39">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QLabel" name="label_40">
<property name="text">
<string>Срок действия </string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDateEdit" name="dateEdit_dop_1">
<property name="styleSheet">
<string notr="true"/>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDateEdit" name="dateEdit_dop_2"/>
</item>
<item row="5" column="1">
<widget class="QDateEdit" name="dateEdit_dop_3"/>
</item>
<item row="7" column="1">
<widget class="QDateEdit" name="dateEdit_dop_4"/>
</item>
<item row="9" column="1">
<widget class="QDateEdit" name="dateEdit_dop_5"/>
</item>
<item row="11" column="1">
<widget class="QDateEdit" name="dateEdit_dop_6"/>
</item>
<item row="13" column="1">
<widget class="QDateEdit" name="dateEdit_dop_7"/>
</item>
<item row="15" column="1">
<widget class="QDateEdit" name="dateEdit_dop_8"/>
</item>
<item row="17" column="1">
<widget class="QDateEdit" name="dateEdit_dop_9"/>
</item>
</layout>
</item>
</layout>
</widget>
ПРОДОЛЖЕНИЕ ОТВЕТА 2.
ui_lke2.ui часть 2 (строки 481 - до конца)
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Таблица "Информационные данные"</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>Таблица "Исходные условия", "Итоговые результаты"</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_17">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_9">
<property name="title">
<string>Таблица "Исходные условия"</string>
</property>
<layout class="QGridLayout" name="gridLayout_20">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidget">
<attribute name="horizontalHeaderDefaultSectionSize">
<number>160</number>
</attribute>
<row>
<property name="text">
<string>1</string>
</property>
</row>
<column>
<property name="text">
<string>Модельная среда</string>
</property>
</column>
<column>
<property name="text">
<string>Условия подачи газа</string>
</property>
</column>
<column>
<property name="text">
<string>Температура, °С</string>
</property>
</column>
<column>
<property name="text">
<string>Объем раствора,
л
</string>
</property>
</column>
<column>
<property name="text">
<string>pH исх.,
ед. pH
</string>
</property>
</column>
<column>
<property name="text">
<string>Конц. СО2,
мг/дм3
</string>
</property>
</column>
<column>
<property name="text">
<string>Конц. О2,
%
</string>
</property>
</column>
<column>
<property name="text">
<string>Количество образцов,
шт
</string>
</property>
</column>
<column>
<property name="text">
<string>Размер образца,
× 10-3 М
</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_10">
<property name="title">
<string>Таблица "Итоговые результаты"</string>
</property>
<layout class="QGridLayout" name="gridLayout_19">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidget_2">
<attribute name="horizontalHeaderDefaultSectionSize">
<number>160</number>
</attribute>
<row>
<property name="text">
<string>1</string>
</property>
</row>
<column>
<property name="text">
<string>Маркировка</string>
</property>
</column>
<column>
<property name="text">
<string>Марка стали</string>
</property>
</column>
<column>
<property name="text">
<string>Вес до испытания</string>
</property>
</column>
<column>
<property name="text">
<string>Вес с продуктами коррозии</string>
</property>
</column>
<column>
<property name="text">
<string>Потеря массы,
×10-3 кг
</string>
</property>
</column>
<column>
<property name="text">
<string>Потеря массы </string>
</property>
</column>
<column>
<property name="text">
<string>Вес после снятия
продуктов коррозии
</string>
</property>
</column>
<column>
<property name="text">
<string>Потеря массы,
×10-3 кг
</string>
</property>
</column>
<column>
<property name="text">
<string>Скорость коррозии </string>
</property>
</column>
</widget>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_18">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_7">
<property name="text">
<string>Добавить строку</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_8">
<property name="text">
<string>Удалить строку</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_7">
<attribute name="title">
<string>Таблица "Результаты в ходе проведения испытаний"</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_22">
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_21">
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget_2">
<property name="styleSheet">
<string notr="true">QTabWidget{
Width: 280px;
Heigth: 238px;
}</string>
</property>
<property name="currentIndex">
<number>3</number>
</property>
<widget class="QWidget" name="tab_8">
<attribute name="title">
<string>График "Ph"</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_24">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QWidget" name="widget" native="true"/>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_9">
<attribute name="title">
<string>График "Fe"</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_25">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QWidget" name="widget_2" native="true"/>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_10">
<attribute name="title">
<string>График "CO2"</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_26">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_11">
<item row="0" column="0">
<widget class="QWidget" name="widget_3" native="true"/>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Ph/Fe</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_13">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_12">
<item row="0" column="0">
<widget class="QWidget" name="widget_4" native="true"/>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox_11">
<property name="title">
<string>Настройки таблицы</string>
</property>
<layout class="QGridLayout" name="gridLayout_23">
<item row="6" column="0">
<widget class="QLabel" name="label_71">
<property name="text">
<string>Директория сохранения файла</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLineEdit" name="lineEdit_53"/>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_9">
<property name="text">
<string>Добавить</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_69">
<property name="text">
<string>Добавить строку</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_70">
<property name="text">
<string>Удалить строку</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_10">
<property name="text">
<string>Удалить</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_72">
<property name="text">
<string>Имя сохраняемого файла</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QPushButton" name="pushButton_11">
<property name="text">
<string>Просмотреть график</string>
</property>
</widget>
</item>
<item row="7" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="lineEdit_52"/>
</item>
<item>
<widget class="QToolButton" name="toolButton_5">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="10" column="0">
<widget class="QPushButton" name="pushButton_12">
<property name="text">
<string>Сохранить график</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidget_3">
<attribute name="horizontalHeaderDefaultSectionSize">
<number>160</number>
</attribute>
<row>
<property name="text">
<string>1</string>
</property>
</row>
<column>
<property name="text">
<string>Дата </string>
</property>
</column>
<column>
<property name="text">
<string>Общее время, час</string>
</property>
</column>
<column>
<property name="text">
<string> pH,
ед. pH
</string>
</property>
</column>
<column>
<property name="text">
<string>погрешность ±Δ,
ед. pH
</string>
</property>
</column>
<column>
<property name="text">
<string>С(Fe общ.),
мг/дм3
</string>
</property>
</column>
<column>
<property name="text">
<string>погрешность ±Δ,
мг/дм3
</string>
</property>
</column>
<column>
<property name="text">
<string>С(СО2),
мг/дм3
</string>
</property>
</column>
<column>
<property name="text">
<string>погрешность ±Δ,
мг/дм3
</string>
</property>
</column>
<column>
<property name="text">
<string/>
</property>
</column>
<column>
<property name="text">
<string>погрешность ±Δ,</string>
</property>
</column>
<item row="0" column="1">
<property name="text">
<string>1</string>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>640</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>


