Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.02.2025
Сообщений: 2

Почему программа вылетает при нажатии какой либо кнопки?

22.02.2025, 18:10. Показов 1663. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу первую прогу(пытаюсь писать) на pyQT5 при нажатии одной из кнопок вылетает никаких ошибок при этом не выдает


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
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
 
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(838, 803)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.otvet1 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet1.setGeometry(QtCore.QRect(50, 50, 75, 23))
        self.otvet1.setObjectName("otvet1")
        self.otvet2 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet2.setGeometry(QtCore.QRect(50, 100, 75, 23))
        self.otvet2.setObjectName("otvet2")
        self.otvet4 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet4.setGeometry(QtCore.QRect(180, 100, 75, 23))
        self.otvet4.setObjectName("otvet4")
        self.otvet3 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet3.setGeometry(QtCore.QRect(180, 50, 75, 23))
        self.otvet3.setObjectName("otvet3")
        self.otvet6 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet6.setGeometry(QtCore.QRect(310, 100, 75, 23))
        self.otvet6.setObjectName("otvet6")
        self.otvet5 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet5.setGeometry(QtCore.QRect(310, 50, 75, 23))
        self.otvet5.setObjectName("otvet5")
        self.otvet8 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet8.setGeometry(QtCore.QRect(440, 100, 75, 23))
        self.otvet8.setObjectName("otvet8")
        self.otvet7 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet7.setGeometry(QtCore.QRect(440, 50, 75, 23))
        self.otvet7.setObjectName("otvet7")
        self.otvet10 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet10.setGeometry(QtCore.QRect(570, 100, 75, 23))
        self.otvet10.setObjectName("otvet10")
        self.otvet9 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet9.setGeometry(QtCore.QRect(570, 50, 75, 23))
        self.otvet9.setObjectName("otvet9")
        self.otvet12 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet12.setGeometry(QtCore.QRect(700, 100, 75, 23))
        self.otvet12.setObjectName("otvet12")
        self.otvet11 = QtWidgets.QPushButton(self.centralwidget)
        self.otvet11.setGeometry(QtCore.QRect(700, 50, 75, 23))
        self.otvet11.setObjectName("otvet11")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(180, 690, 421, 61))
        self.label.setText("Пример текста в низу")
        self.label.setObjectName("label")
        self.primer = QtWidgets.QLabel(self.centralwidget)
        self.primer.setGeometry(QtCore.QRect(266, 390, 221, 41))
        self.primer.setText("Ч1")
        self.primer.setObjectName("primer")
        MainWindow.setCentralWidget(self.centralwidget)
        self.add_func()
 
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.otvet1.setText(_translate("MainWindow", "Ч1"))
        self.otvet2.setText(_translate("MainWindow", "М2"))
        self.otvet4.setText(_translate("MainWindow", "М3"))
        self.otvet3.setText(_translate("MainWindow", "Б2"))
        self.otvet6.setText(_translate("MainWindow", "Ч4"))
        self.otvet5.setText(_translate("MainWindow", "Б3"))
        self.otvet8.setText(_translate("MainWindow", "М6"))
        self.otvet7.setText(_translate("MainWindow", "Ч5"))
        self.otvet10.setText(_translate("MainWindow", "М7"))
        self.otvet9.setText(_translate("MainWindow", "Б6"))
        self.otvet12.setText(_translate("MainWindow", "Ч8"))
        self.otvet11.setText(_translate("MainWindow", "Б7"))
    def otvetu(self, otvet):
        if otvet == self.primer.text:
            self.label.setText("Правильно!")
        else:
            self.label.setText("Неправильно!")
    def add_func(self):
        self.otvet1.clicked.connect(lambda: otvetu(self.otvet1.text))
        self.otvet2.clicked.connect(lambda: otvetu(self.otvet2.text))
        self.otvet3.clicked.connect(lambda: otvetu(self.otvet3.text))
        self.otvet4.clicked.connect(lambda: otvetu(self.otvet4.text))
        self.otvet5.clicked.connect(lambda: otvetu(self.otvet5.text))
        self.otvet6.clicked.connect(lambda: otvetu(self.otvet6.text))
        self.otvet7.clicked.connect(lambda: otvetu(self.otvet7.text))
        self.otvet8.clicked.connect(lambda: otvetu(self.otvet8.text))
        self.otvet9.clicked.connect(lambda: otvetu(self.otvet9.text))
        self.otvet11.clicked.connect(lambda: otvetu(self.otvet11.text))
        self.otvet12.clicked.connect(lambda: otvetu(self.otvet12.text))
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2025, 18:10
Ответы с готовыми решениями:

Как сделать, чтобы при нажатии кнопки программа переходила к следующему окну или открывала его отдельно?
Прошу не судить строго, изучаю пайтон только 2 день. Сразу извиняюсь за такой огромный текст( Пишу приложение, вкратце, его функционал...

При нажатии кнопки START, программа вылетает, почему это происходит?
Моя задача нарисовать поле 800 на 600, в центре поставить шарик и реализовать его столкновение со стенками, вначале я устанавливаю...

Почему вылетает программа при нажатии Enter?
Здравствуйте! Помогите, кто разбирается хорошо в ВАТ-анике )) Работает моя программа нормально, но! Если тут :LOCK cls echo...

3
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
22.02.2025, 20:11
Цитата Сообщение от vertuxai228 Посмотреть сообщение
при нажатии одной из кнопок вылетает никаких ошибок при этом не выдает
приведите к понятному виду пжл
0
0 / 0 / 0
Регистрация: 22.02.2025
Сообщений: 2
23.02.2025, 10:54  [ТС]
вроде привел
0
 Аватар для ViachaslauK
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
23.02.2025, 14:11
Цитата Сообщение от vertuxai228 Посмотреть сообщение
вроде привел
Если вы так считатете, начните изучение с PEP8

Цитата Сообщение от vertuxai228 Посмотреть сообщение
def add_func(self):
        self.otvet1.clicked.connect(lambda: otvetu(self.otvet1.text))
вас тут ничего не смущает?
Может все-таки
def add_func(self):
self.otvet1.clicked.connect(lambda: self.otvetu(self.otvet1.text))

Добавлено через 2 часа 54 минуты
В принципе твой код нерабочий.
Вот так будет работать:
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
from PyQt5 import QtCore, QtGui, QtWidgets
 
BUTTON_CONFIGS = [
    ("otvet1", 50, 50, "Ч1"),
    ("otvet2", 50, 100, "М2"),
    ("otvet3", 180, 50, "Б2"),
    ("otvet4", 180, 100, "М3"),
    ("otvet5", 310, 50, "Б3"),
    ("otvet6", 310, 100, "Ч4"),
    ("otvet7", 440, 50, "Ч5"),
    ("otvet8", 440, 100, "М6"),
    ("otvet9", 570, 50, "Б6"),
    ("otvet10", 570, 100, "М7"),
    ("otvet11", 700, 50, "Б7"),
    ("otvet12", 700, 100, "Ч8"),
]
 
 
class Ui_MainWindow(object):
 
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(838, 803)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
 
        # Create buttons and connect signals
        self.buttons = {}
        for name, x, y, text in BUTTON_CONFIGS:
            button = self.create_button(name, x, y)
            button.setText(text)
            button.clicked.connect(lambda checked, t=text: self.otvetu(t))
            self.buttons[name] = button
 
        # Create labels
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(180, 690, 421, 61))
        self.label.setText("Пример текста в низу")
        self.label.setObjectName("label")
 
        self.primer = QtWidgets.QLabel(self.centralwidget)
        self.primer.setGeometry(QtCore.QRect(266, 390, 221, 41))
        self.primer.setText("Ч1")
        self.primer.setObjectName("primer")
 
        MainWindow.setCentralWidget(self.centralwidget)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
 
    def otvetu(self, otvet):
        """Handle button click and compare answers"""
        label_text = self.primer.text()  # Call the text() method
        print(f"Button text: {otvet}, Label text: {label_text}")
        print(f"Types - Button: {type(otvet)}, Label: {type(label_text)}")
 
        # Ensure exact string comparison
        if str(otvet).strip() == str(label_text).strip():
            self.label.setText("Правильно!")
        else:
            self.label.setText("Неправильно!")
 
    def create_button(self, name, x, y):
        """Helper method to create a button with given parameters"""
        button = QtWidgets.QPushButton(self.centralwidget)
        button.setGeometry(QtCore.QRect(x, y, 75, 23))
        button.setObjectName(name)
        setattr(self, name, button)  # Make button accessible as self.otvet1, etc.
        return button
 
 
if __name__ == "__main__":
    import sys
 
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2025, 14:11
Помогаю со студенческими работами здесь

При изменении каких либо данных программа либо вылетает, либо просто не изменяет данные
Добрый вечер. Только недавно начал заниматься С++. И вот возникли проблемы. При изменении каких либо данных. Программа либо вылетает(Qt),...

Вылетает при нажатии кнопки
Всем привет! Есть класс (mainwindow.h): #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <vector>...

Проигрывание звука при нажатии кнопки, либо при вхождении в зону кнопочной формы
Подскажите пожалуйста как можно создать проигрывание звука, к примеру есть .wav файл, и теперь я хочу, чтоб при наведении на кнопку...

Code::Blocks вылетает при нажатии кнопки Debug
Начал использовать Code::Blocks, хочу дебажить программу. Ставлю breakpoint на некоторую строку. При нажатии на кнопку "Debug /...

Почему при нажатии на кнопку приложение вылетает?
Я новичок и недавно работаю в android studio и не могу разобраться как решить проблему . При нажатии на 1 кнопку происходит переход на 2...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru