Можно ли использовать оператор `with` вместе с QT (Qt framework)?

Как можно исправить ошибку, возникающую при запуске программы с графическим интерфейсом QT, которая приводит к её завершению с кодом ошибки -1073740791 (0xC0000409), если до этого программа работала корректно в консольном режиме? В коде присутствует функция импорта csv-файла в базу данных, которая вызывается из графического интерфейса QT и приводит к проблеме. В чём может быть причина и как можно исправить эту ошибку?
  • 8 мая 2024 г. 23:40
Ответы на вопрос 2
Да, можно использовать оператор `with` вместе с Qt framework, но следует быть осторожным при его использовании, так как Qt framework имеет свою систему управления памятью.

Чтобы исправить ошибку, которая приводит к завершению программы с кодом ошибки -1073740791 (0xC0000409) при импорте csv-файла в базу данных из графического интерфейса Qt, можно попробовать следующие шаги:

1. Убедитесь, что все необходимые библиотеки и зависимости подключены и настроены правильно для работы с Qt framework.
2. Проверьте, что пути к файлам и доступ к ним корректны при импорте csv-файла.
3. Проверьте, что программа корректно обрабатывает исключения и ошибки при импорте файла в базу данных.
4. Попробуйте установить отлов и вывод ошибок с помощью `try-except` конструкции для более детального анализа возможных причин проблемы.
5. Проверьте, что программа корректно освобождает ресурсы после завершения импорта файла.

Если проблема не устраняется данными методами, рекомендуется обратиться к документации Qt framework или к сообществу разработчиков для получения дополнительной помощи и информации по данному вопросу.
В общем решил вопрос. Как мне кажется жутким костылем. 
Я в функции которая получает адрес файла вызвал функцию которая обрабатывает этот же файл и передал ему переменную с адресом файла.
Заработало.
Выглядит вот так.

Подскажите это прям жуткий костыль? Или приемлемое решение?

Функция которая обрабатывает файл:
def import_csv_orders(orders_file):  # импорт csv в базу данных
    con = sqlite3.connect('razbor.db')
    cur = con.cursor()
    print(f'ордер файл {orders_file}')
    orders = orders_file
    with open(orders, newline='') as csvfile:  # чтение файла
        rows = csv.reader(csvfile, delimiter=';')  # чтение файла
        counter = 0
        for row in rows:  # разбор файла
            print(row)
            # присваеваем запрос переменной
            sqlite_insert_query = """INSERT INTO orders
                                    (supply, customer_name, customer, code_ps_d, material, scope_of_delivery, unit, quantity_in_pieces, picking_date, batch, fresh, vsd, Transporting_the_second_arm)
                                VALUES
                                    (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"""

            cur.executemany(sqlite_insert_query, rows)     # запрос совместно с кортежем данных из csv файла
            counter += 1
            con.commit()
    color_txt_print('База Orders загружена успешно', 'система')


Функция которая получает путь и в ней же вызвана функция обработки файла:
def open_file_orders(): # выбор файла Ордерс
    app = QtWidgets.QApplication([])
    path_file = QtWidgets.QFileDialog.getOpenFileName(None, directory=r'C:\Users\tomhu\Desktop', filter="Data Base (*.csv)")[0]
    print(path_file)
    form.ordersLine.setText(path_file)
    print(f"Выбран ордерс путь {path_file}")
    print(type(path_file))
    import_csv_orders(path_file)  # вызываем функцию обработки файла и передаем в параметры путь до файла
    print('База ордерс загружена')
Похожие вопросы