Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
PyQt5

Ошибка -1073740791 (0xC0000409) при запуске определённой функции

14.09.2020, 14:26. Показов 6732. Ответов 8

Студворк — интернет-сервис помощи студентам
Так, на pyqt5 написал ПО (незаконченное), в котором использую функции для работы с таблицей QTableWidget. Среди этих функций есть функция <НАЙТИ>. Идея такова, что пользователь кликает по lineEdit, записывает строку, нажимает кнопку <НАЙТИ>, а затем ячейки, которые содержат данную строку, меняют цвет фона. В этой функции (find(self) в коде) используется метод findItems, в котором скорее всего и находится ошибка. Дело в том, что любая другая функция пока работает так, как мне нужно. А вот при нажатии на кнопку <НАЙТИ> программа завершается с кодом ошибки -1073740791 (0xC0000409)

Основной файл myproject.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QTableWidgetItem
from table import Ui_MainWindow
from info import Ui_ADD_WINDOW
import sys
 
class ADDWINDOW(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_ADD_WINDOW()
        self.ui.setupUi(self)
        self.ui.label.setText('Вы открыли информационное окно!')
        self.ui.pushButton.clicked.connect(self.exit)
        self.ui.pushButton_2.clicked.connect(self.scroll)
 
    def exit(self):
        self.close()
 
    def scroll(self):
        self.ui.label.setText('В этом приложении вы найдёте таблицу с некоторой информацией.\n\
Эту информацию можно редактировать с помощью различных функций.\n\
Отредактировать ячейку можно в любое время двойным щелчком по ней.')
        self.ui.pushButton_2.clicked.connect(self.scroll_2)
 
    def scroll_2(self):
        self.ui.label.setText('Функция <ДОБАВИТЬ> позволяет добавлять новые строки в таблицу.\n\
Добавленные строки являются пустыми и готовы к редактированию.')
        self.ui.pushButton_2.clicked.connect(self.scroll_3)
 
    def scroll_3(self):
        self.ui.label.setText('Функция <УДАЛИТЬ> позволяет удалять строки таблицы.\n\
Для этого нажмите на номер строки слева, а затем кнопку <УДАЛИТЬ>.\n\
Тоже самое можно сделать с выделением ячейки нужной строки.')
        self.ui.pushButton_2.clicked.connect(self.scroll_4)
 
    def scroll_4(self):
        self.ui.label.setText('Функция <ОЧИСТИТЬ> позволяет удалять содержимое таблицы.\n\
Внимание! Данная функция удаляет всё содержимое каждой ячейки.')
        self.ui.pushButton_2.clicked.connect(self.scroll_5)
 
    def scroll_5(self):
        self.ui.label.setText('Функция <СОРТИРОВАТЬ> позволяет сортировать содержимое таблицы.\n\
Для этого нажмите на номер колонки сверху и кнопку <СОРТИРОВАТЬ>.')
        self.ui.pushButton_2.clicked.connect(self.scroll_6)
 
    def scroll_6(self):
        self.ui.label.setText('')
 
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.rows = 5
        self.columns = 6
        self.data = []
        self.init_UI()
 
    def init_UI(self):
        self.setWindowTitle('Шахматисты')
 
        self.ui.tableWidget.setColumnCount(6)
        self.ui.tableWidget.setRowCount(5)
        self.ui.lineEdit.setPlaceholderText('Поле для ввода данных')
        self.ui.tableWidget.setHorizontalHeaderLabels(
            ('Имя', 'Возраст', 'Пол', 'Страна', 'Разряд', 'Чемпион мира')
        )
        self.data.append(('Аагнус Карлсун', '35', 'Мужской', 'Норвегия', 'Гроссмейстер', 'Да'))
        self.data.append(('Магнус Карлсен', '30', 'Мужской', 'Норвегия', 'Гроссмейстер', 'Да'))
        self.data.append(('Магнус Карлсен', '31', 'Мужской', 'Норвегия', 'Гроссмейстер', 'Да'))
        self.data.append(('Магнус Карлсен', '32', 'Мужской', 'Норвегия', 'Гроссмейстер', 'Да'))
        self.data.append(('Багнус Карлсен', '33', 'Мужской', 'Норвегия', 'Гроссмейстер', 'Да'))
 
        row = 0
        for tup in self.data:
            col = 0
 
            for item in tup:
                cellinfo = QTableWidgetItem(item)
                cellinfo.setTextAlignment(int(QtCore.Qt.AlignVCenter) | int(QtCore.Qt.AlignHCenter))
                self.ui.tableWidget.setItem(row, col, cellinfo)
                col += 1
 
            row += 1
 
 
        self.ui.pushButton_6.clicked.connect(self.clear)
        self.ui.pushButton_5.clicked.connect(self.delete)
        self.ui.pushButton_4.clicked.connect(self.insert)
        self.ui.pushButton.clicked.connect(self.sort)
        self.ui.pushButton_2.clicked.connect(self.find)
        self.ui.pushButton_3.clicked.connect(self.ADD)
 
 
    def clear(self):
        self.ui.tableWidget.clear()
        self.data = []
 
    def delete(self):
        self.ui.tableWidget.removeRow(self.ui.tableWidget.currentRow())
 
    def rewrite(self):
        current_list = []
        current_list_of_lists = []
        for x in range(self.ui.tableWidget.rowCount()):
            for y in range(self.ui.tableWidget.columnCount()):
                current_list.append(str(self.ui.tableWidget.takeItem(x + 1, y + 1)))
            current_list_of_lists.append(current_list)
        self.data = current_list_of_lists
 
    def insert(self):
        self.ui.tableWidget.insertRow(int(self.ui.tableWidget.rowCount()))
 
    def sort(self):
        self.ui.tableWidget.sortItems(self.ui.tableWidget.currentColumn(), 0)
 
    def find(self):
        string = self.ui.lineEdit.text()
        if string == string.empty():
            self.ui.lineEdit.text('Введите информацию')
        else:
            spisok = self.ui.tableWidget.findItems(string, QtCore.Qt.MatchExactly | QtCore.Qt.MatchRecursive)
        for x in range(spisok):
            x.setBackgroundColor('red')
 
    def ADD(self):
        application_2 = ADDWINDOW(self)
        application_2.show()
 
app = QtWidgets.QApplication([])
application = mywindow()
application.show()
 
sys.exit(app.exec())
Файл table.py, созданный с помощью Designer. Основное окно

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(0, 0, 801, 421))
        self.tableWidget.setRowCount(0)
        self.tableWidget.setColumnCount(0)
        self.tableWidget.setObjectName("tableWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 520, 93, 61))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(130, 520, 93, 61))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(240, 520, 93, 61))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(20, 440, 93, 61))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(130, 440, 93, 61))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(240, 440, 93, 61))
        self.pushButton_6.setObjectName("pushButton_6")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(360, 440, 421, 141))
        self.lineEdit.setStyleSheet("font: 18pt \"MS Shell Dlg 2\";")
        self.lineEdit.setText("")
        self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit.setCursorMoveStyle(QtCore.Qt.LogicalMoveStyle)
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "СОРТИРОВАТЬ"))
        self.pushButton_2.setText(_translate("MainWindow", "НАЙТИ"))
        self.pushButton_3.setText(_translate("MainWindow", "ИНФО"))
        self.pushButton_4.setText(_translate("MainWindow", "ДОБАВИТЬ"))
        self.pushButton_5.setText(_translate("MainWindow", "УДАЛИТЬ"))
        self.pushButton_6.setText(_translate("MainWindow", "ОЧИСТИТЬ"))
Файл info.py, созданный с помощью Designer. Дополнительное окно для функции <ИНФО>

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_ADD_WINDOW(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 317)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 10, 781, 221))
        self.label.setStyleSheet("font: 12pt \"MS Shell Dlg 2\";")
        self.label.setText("")
        self.label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(690, 280, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(590, 280, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Выход"))
        self.pushButton_2.setText(_translate("MainWindow", "Далее"))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2020, 14:26
Ответы с готовыми решениями:

Ошибка Process finished with exit code -1073740791 (0xC0000409)
# -*- coding: utf-8 -*- import sys from PyQt5 import QtGui from UI.mainWindow import MainWindow as mWindow import...

Ошибка Process finished with exit code -1073740791 (0xC0000409)
суть задачи: при нажатии кнопки, решение задачи в первом поле ввода отображается во втором поле ввода вот код: import sys from...

PyQt5 Ошибка Process finished with exit code -1073740791 (0xC0000409)
Задание: вводишь выражение по типу 1+1 в первую строку, а во второй строке ответ. Проблема: Окно открывается, я ввожу выражение, окно не...

8
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
15.09.2020, 07:52
Лучший ответ Сообщение было отмечено KaffLime как решение

Решение

KaffLime, не читабельно, ты используешь QtDesigner, вот главная ошибка.

При работе с таблицами, и если ты используешь ее не только для отображения данных, то нужно использовать QTableView + QAbstractTableModel, иначе вся программа будет большим костылем, тогда функции сортировки, выделения будут описаны в пару строк кода. Так же будет понятно, где, что и как работает и таких ошибок возникать не будет.
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
15.09.2020, 11:39  [ТС]
Спасибо! А можно узнать больше про QAbstractTableModel? Впервые слышу, как он используется в коде?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
15.09.2020, 13:28
KaffLime, грубо говоря QTableView - это фронтенд, отвечает за визуализацию, а QAbstractTableModel - это бекенд, отвечает за обработку данных.

Добавлено через 5 минут
Так себе пример конечно, но хотя бы:
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from PySide2 import QtWidgets, QtCore, QtGui
 
 
class Model(QtCore.QAbstractTableModel):
 
    def __init__(self, parent: QtWidgets.QTableView = None):
        QtCore.QAbstractTableModel.__init__(self, parent)
        self.table = [
            [1, 2, 3, 4, 5],
            [5, 4, 3, 2, 1],
            [3, 2, 1, 4, 5]
        ]
 
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int:
        return len(self.table)
 
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int:
        return 5
 
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> any:
        data: int = self.table[index.row()][index.column()]
        if role == QtCore.Qt.DisplayRole:
            return data
        elif role == QtCore.Qt.BackgroundRole:
            return QtGui.QColor("red") if data < 3 else QtGui.QColor("green")
 
 
class Table(QtWidgets.QTableView):
 
    def __init__(self, parent: QtWidgets.QWidget = None):
        QtWidgets.QTableView.__init__(self, parent)
        self.setModel(Model(self))
 
        if not parent: self.show()
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication()
    main = Table()
    app.exec_()
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
15.09.2020, 14:27  [ТС]
Хм, я бы даже отказался от дизайнера для создания таблицы, но, честно говоря, в интернете очень мало информации на этот счёт. Всё, что я нашёл более или менее нормальное: https://www.learnpyqt.com/cour... py-pandas/. Надеюсь размещением ссылки я ничего не нарушил. Спасибо ещё раз. А вообще интересно откуда вы набрались опыту в этой теме при таком малом количестве инфы
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
15.09.2020, 14:55
KaffLime, ну для старта этот пост подойдет, по сути ничего сложного там нет, по факту тебе надо реализовать только пару методов, это data, headerData, rowCount, columnCount, для отображения данных, и flags, setData для редактирования данных. Есть описание всех классов лично я смотрел в офф. доках Qt на CLang но есть и на Python.
1
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
16.09.2020, 02:43
KaffLime, тут долго обсуждали
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
16.09.2020, 11:10  [ТС]
Спасибо. Можно ль узнать насколько ещё актуальна книга, которую вы советовали в обсуждении? https://codernet.ru/books/pyth... ilozhenij/
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
16.09.2020, 11:13
KaffLime, для начала вполне
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2020, 11:13
Помогаю со студенческими работами здесь

Ошибка -1073740791 (0xC0000409), не работает перевод строки в инт в определенном методе
Код не полный, в методе result_generate не хочет работать int(self.textEdit_3.toPlainText()), начинает выдавать ошибку при нажатии на...

Process finished with exit code -1073740791 (0xC0000409)
Сижу значит, юзаю функцию для нахождения инфы с сайта в отдельном файле, перенёс в основной файл, не работает и выдаёт лютый код ошибки. ...

PyQt6 Process finished with exit code -1073740791 (0xC0000409)
пишу программу на основе PyQt6 выбираю файлик через QFileDialog.getOpenFileName передаю ссылку на него в дрегой модуль чтоб собрать...

Python -> OpenCV = Process finished with exit code -1073740791 (0xC0000409)
Всем доброго времени суток. Каждый раз при запуске программы вылезает выход из программы. Не пойму почему Process finished with exit...

Ошибка при запуске программы "Process finished with exit code -1073740791 (0xC0000409)"
Здравствуйте. Я пытаюсь запустить программу с использованием OpenCV и CUDA в PyCharm. Я предварительно с помощью CMake и Anaconda3 создал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru