QAction to close QMainWindow ведет себя непоследовательно только в IPython - PullRequest
1 голос
/ 26 марта 2019

Мне нужно QMainWindow, которое пользователь может закрыть: щелкнув по кнопке закрытия окна, щелкнув по элементу в меню или используя сочетание клавиш.Это мое решение:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QAction, qApp, QApplication, QMainWindow)

class Window(QMainWindow):
    '''A simple window'''

    def __init__(self):
        super().__init__()
        self.make_gui()

    def make_gui(self):
        '''Create main GUI window'''
        self.menuBar()
        self.statusBar()
        exitAction = QAction(QIcon(None), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)
        fileMenu = self.menuBar().addMenu('Actions')
        fileMenu.addAction(exitAction)
        self.show()


if __name__ == '__main__':
    APP = QApplication([])
    GUI1 = Window()
    sys.exit(APP.exec_())

Когда я запускаю этот код с python, это работает каждый раз, независимо от того, какое из трех действий используется для закрытия окна.Когда я запускаю его в IPython, может произойти одно из следующих действий:

  1. Все работает как положено.

  2. При выходе окно не отображаетсязакрыть.

  3. При выходе окно не закрывается, и IPython завершается.

  4. При запуске начинают появляться предупреждения в оболочке IPython,Больше появляются при взаимодействии с приложением.После появления этих предупреждений они будут появляться при каждом последующем запуске до перезапуска IPython.

Примеры предупреждений:

QWindowsContext::windowsProc: No Qt Window found for event 0x1c (WM_ACTIVATEAPP), hwnd=0x0xb0dd8.
QWindowsContext::windowsProc: No Qt Window found for event 0x2a3 (WM_MOUSELEAVE), hwnd=0x0xb0dd8.
QWindowsContext::windowsProc: No Qt Window found for event 0x24a (WM_POINTERLEAVE), hwnd=0x0xb0dd8.
QWindowsContext::windowsProc: No Qt Window found for event 0x1c (WM_ACTIVATEAPP), hwnd=0x0xb0dd8.

Моя среда: Python 3.7.2 64-бит в Windows 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...