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

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

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

Author24 — интернет-сервис помощи студентам
Так, на 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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...

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

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

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

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

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

Решение

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

При работе с таблицами, и если ты используешь ее не только для отображения данных, то нужно использовать QTableView + QAbstractTableModel, иначе вся программа будет большим костылем, тогда функции сортировки, выделения будут описаны в пару строк кода. Так же будет понятно, где, что и как работает и таких ошибок возникать не будет.
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 224
15.09.2020, 11:39  [ТС] 3
Спасибо! А можно узнать больше про QAbstractTableModel? Впервые слышу, как он используется в коде?
0
Модератор
Эксперт Python
2691 / 1597 / 513
Регистрация: 21.02.2017
Сообщений: 4,211
Записей в блоге: 1
15.09.2020, 13:28 4
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
Сообщений: 224
15.09.2020, 14:27  [ТС] 5
Хм, я бы даже отказался от дизайнера для создания таблицы, но, честно говоря, в интернете очень мало информации на этот счёт. Всё, что я нашёл более или менее нормальное: https://www.learnpyqt.com/cour... py-pandas/. Надеюсь размещением ссылки я ничего не нарушил. Спасибо ещё раз. А вообще интересно откуда вы набрались опыту в этой теме при таком малом количестве инфы
0
Модератор
Эксперт Python
2691 / 1597 / 513
Регистрация: 21.02.2017
Сообщений: 4,211
Записей в блоге: 1
15.09.2020, 14:55 6
KaffLime, ну для старта этот пост подойдет, по сути ничего сложного там нет, по факту тебе надо реализовать только пару методов, это data, headerData, rowCount, columnCount, для отображения данных, и flags, setData для редактирования данных. Есть описание всех классов лично я смотрел в офф. доках Qt на CLang но есть и на Python.
1
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
16.09.2020, 02:43 7
KaffLime, тут долго обсуждали
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 224
16.09.2020, 11:10  [ТС] 8
Спасибо. Можно ль узнать насколько ещё актуальна книга, которую вы советовали в обсуждении? https://codernet.ru/books/pyth... ilozhenij/
0
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
16.09.2020, 11:13 9
KaffLime, для начала вполне
1
16.09.2020, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2020, 11:13
Помогаю со студенческими работами здесь

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

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

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

При нажатии на кнопку закрывается приложение и вылазит ошибка: Process finished with exit code -1073740791 (0xC0000409)
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'C:\Python\lite.ui'...

Ошибка Process finished with exit code -1073740791 (0xC0000409)
всю голову изломал, не могу найти причину: def opener(self): with open('input.txt',...

PyQt5 Ошибка Process finished with exit code -1073740791 (0xC0000409)
from PyQt5.QtWidgets import QMainWindow, QApplication, QMenu, QMenuBar, QAction, QFileDialog,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru