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

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

14.09.2020, 14:26. Показов 6668. Ответов 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,761
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,761
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru