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

Не реагирует вторая форма на нажатие клавиши

15.10.2020, 13:12. Показов 1177. Ответов 1

Студворк — интернет-сервис помощи студентам
коллеги!
Я хочу создать приложение,в котором есть два окна,в свою очередь состоящее каждое из двух кнопок. При нажатии одной кнопки на первой форме выводится в консоль слово "Forward", при нажатии второй выводится вторая форма. И во втором окне при нажатии на одну из кнопок должно просто выводиться сообщение:

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
  import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from First_window import *
    from Second_window import *
    
    class MyWin(QtWidgets.QMainWindow):
        def __init__(self,parent=None):
            QtWidgets.QWidget.__init__(self,parent)
            self.ui = Ui_First_window()
            self.ui.setupUi(self)
            self.ui.download_button.clicked.connect(self.handler)
            self.ui.import_button.clicked.connect(self.openWindow)
        def handler(self):
            print("Forward!!!")
        def openWindow(self):
            self.window = QtWidgets.QMainWindow()
            self.ui = Ui_Second_window()
            self.ui.setupUi(self.window)
     #       Second_window.hide()
            self.window.show()
    
    class MySecond(QtWidgets.QMainWindow):
        def __init__(self,parent=MyWin):
            QtWidgets.QWidget.__init__(self,parent)
            self.ui = Ui_Second_window()
            self.ui.setupUi(self)
            self.ui.save_button.clicked.connect(self.handler2)
        def handler2(self):
            print("STOPPP!!!")
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        myapp = MyWin()
        myapp.show()
        sys.exit(app.exec_())
К сожалению во второй форме кнопка не нажимается...Я пытался сделать следующие изменения

Python
1
2
3
    def openWindow(self): 
       self.window = MySecond() 
       self.window.show()
получил ошибку

Python
1
2
    QtWidgets.QWidget.__init__(self,parent)
    TypeError: descriptor '__init__' requires a 'sip.simplewrapper' object but received a 'MySecond'
пытался изменить
Python
1
    QtWidgets.QWidget.__init__(self,parent)
на

Python
1
QtWidgets.QMainWindow.__init__(self, parent)
и

Python
1
2
    class MySecond(QtWidgets.QMainWindow):
        def __init__(self,parent=MyWin):
на

Python
1
2
    class MySecond(QtWidgets.QMainWindow):
        def __init__(self,parent=None):
Никакого прогресса.Как решить данную задачу?

Вот первый модуль

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
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_First_window(object):
        def setupUi(self, First_window):
            First_window.setObjectName("First_window")
            First_window.resize(605, 480)
            self.centralwidget = QtWidgets.QWidget(First_window)
            self.centralwidget.setObjectName("centralwidget")
            self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
            self.horizontalLayoutWidget.setGeometry(QtCore.QRect(90, 80, 431, 101))
            self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
            self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
            self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
            self.horizontalLayout_2.setObjectName("horizontalLayout_2")
            self.download_button = QtWidgets.QPushButton(self.horizontalLayoutWidget)
            self.download_button.setObjectName("download_button")
            self.horizontalLayout_2.addWidget(self.download_button)
            spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
            self.horizontalLayout_2.addItem(spacerItem)
            self.import_button = QtWidgets.QPushButton(self.horizontalLayoutWidget)
            self.import_button.setObjectName("import_button")
            self.horizontalLayout_2.addWidget(self.import_button)
            self.table_for_data = QtWidgets.QTableWidget(self.centralwidget)
            self.table_for_data.setGeometry(QtCore.QRect(90, 200, 431, 201))
            self.table_for_data.setRowCount(4)
            self.table_for_data.setColumnCount(4)
            self.table_for_data.setObjectName("table_for_data")
            First_window.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(First_window)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 605, 22))
            self.menubar.setObjectName("menubar")
            First_window.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(First_window)
            self.statusbar.setObjectName("statusbar")
            First_window.setStatusBar(self.statusbar)
    
            self.retranslateUi(First_window)
            QtCore.QMetaObject.connectSlotsByName(First_window)
    
        def retranslateUi(self, First_window):
            _translate = QtCore.QCoreApplication.translate
            First_window.setWindowTitle(_translate("First_window", "MainWindow"))
            self.download_button.setText(_translate("First_window", "dowload files"))
            self.import_button.setText(_translate("First_window", "import and interpolate"))
Вот вторая форма

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
  from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_Second_window(object):
        def setupUi(self, Second_window):
            Second_window.setObjectName("Second_window")
            Second_window.resize(605, 480)
            self.centralwidget = QtWidgets.QWidget(Second_window)
            self.centralwidget.setObjectName("centralwidget")
            self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
            self.horizontalLayoutWidget.setGeometry(QtCore.QRect(90, 80, 431, 101))
            self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
            self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
            self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
            self.horizontalLayout_2.setObjectName("horizontalLayout_2")
            self.save_button = QtWidgets.QPushButton(self.horizontalLayoutWidget)
            self.save_button.setObjectName("save_button")
            self.horizontalLayout_2.addWidget(self.save_button)
            spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
            self.horizontalLayout_2.addItem(spacerItem)
            self.import_button = QtWidgets.QPushButton(self.horizontalLayoutWidget)
            self.import_button.setObjectName("import_button")
            self.horizontalLayout_2.addWidget(self.import_button)
            self.table_for_data = QtWidgets.QTableWidget(self.centralwidget)
            self.table_for_data.setGeometry(QtCore.QRect(90, 200, 431, 201))
            self.table_for_data.setRowCount(4)
            self.table_for_data.setColumnCount(4)
            self.table_for_data.setObjectName("table_for_data")
            Second_window.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(Second_window)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 605, 22))
            self.menubar.setObjectName("menubar")
            Second_window.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(Second_window)
            self.statusbar.setObjectName("statusbar")
            Second_window.setStatusBar(self.statusbar)
    
            self.retranslateUi(Second_window)
            QtCore.QMetaObject.connectSlotsByName(Second_window)
    
        def retranslateUi(self, Second_window):
            _translate = QtCore.QCoreApplication.translate
            Second_window.setWindowTitle(_translate("Second_window", "Saving"))
            self.save_button.setText(_translate("Second_window", "save in csv"))
            self.import_button.setText(_translate("Second_window", "import and interpolate"))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2020, 13:12
Ответы с готовыми решениями:

Не реагирует на нажатие клавиши
Привет ребят. Есть окно, которое имеет 2 поля. В поле 1 мы вводим число, затем нажимаем F6 и в поле 2 выводится наше число в бинарном виде....

Компьютер не реагирует на нажатие клавиши в графическом окне
Здравствуйте, можно сделать так, чтобы при нажатии клавиши в графическом режиме происходило тоже, что и при нажатии в текстовом? То есть...

OnKeyDown реагирует только на одно нажатие клавиши
Есть у меня процедура, которая при нажатии на стрелку двигает картинку типа picture в конкретную сторону, но если зажать две стрелки, к...

1
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
15.10.2020, 14:18
строки 16-18
Цитата Сообщение от kuziashagrath Посмотреть сообщение
Python
1
2
3
self.window = QtWidgets.QMainWindow()
self.ui = Ui_Second_window()
self.ui.setupUi(self.window)
заменить на
Python
1
self.window = MySecond(self)
или
Python
1
self.window = MySecond(None)
Всё зависит от того, нужен ли родитель второму окну.


В строке 23
Цитата Сообщение от kuziashagrath Посмотреть сообщение
Python
1
def __init__(self,parent=MyWin):
parent=MyWin это совсем неверно, уже лучше parent=None
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2020, 14:18
Помогаю со студенческими работами здесь

Код не реагирует на нажатие клавиши. Как это исправить?
Я дописал код(в Visual Studio Code, если интересно) и начал его тестировать. //Рандомер слотов using...

Форма не реагирует на нажатие ее иконки в панели задач
Здравствуйте, не подскажете как исправить? При FormBorderStyle = None, форма не реагирует на нажатие иконки отображаемой на панели задач, а...

Форма не реагирует на нажатие ее иконки в панели задач
Добрый день При програмном создании формы я убрал рамку с помощью FormBorderStyle. При активации такой формы в таск баре появляется...

Расположить в рабочей области 3 окна, каждое из которых по своему реагирует на нажатие левой клавиши мыши
В рабочей области окна приложения рядом друг с другом расположить 3 временных окна, каждое из которых по своему реагирует на нажатие...

Дан список английских глаголов: тип (правильный/неправильный), первая форма, вторая форма, третья форма
Написать программу "Дан список английских глаголов: тип (правильный/неправильный), первая форма, вторая форма, третья форма. Вывести только...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru