Диалоговое окно не открывается

Нужно чтобы при нажатии на кнопку вылезло окно с выбором итема, но это окно не вылезает. Я посмотрел в Debug'е (PyCharm) что последняя сточка ( sys.exit(app.exec_()) ) закрывает это окно. Хотел бы узнать как решить эту проблему. Заранее спасибо!

import sys
from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, QListWidget, QMessageBox)


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.GUI()

    def GUI(self):
        self.setGeometry(int(1920 / 2) - int(500 / 2), int(1080 / 2) - int(600 / 2), 500, 600)
        btn3 = QPushButton('Кнопка 1', self)
        btn3.move(0, 0)
        btn3.resize(500, 600)
        btn3.clicked.connect(self.click)
        self.show()

    def click(self):
        listWidget = QListWidget()
        listWidget.resize(300, 500)
        listWidget.addItem("Item 1")
        listWidget.addItem("Item 2")
        listWidget.addItem("Item 3")
        listWidget.addItem("Item 4")
        listWidget.itemClicked.connect(self.Clicked)
        listWidget.show()

    def Clicked(self, item):
        QMessageBox.information(self, "ListWidget", "You clicked: " + item.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_w = MainWindow()
    sys.exit(app.exec_())

Код взял из : https://www.tutorialspoint.com/pyqt/pyqt_qlistwidget.htm

import sys
from PyQt5.QtWidgets import (QApplication, QListWidget, QMessageBox)


class myListWidget(QListWidget):
    def Clicked(self, item):
        QMessageBox.information(self, "ListWidget", "You clicked: " + item.text())


def main():
    app = QApplication(sys.argv)
    listWidget = myListWidget()
    listWidget.resize(300, 120)
    listWidget.addItem("Item 1")
    listWidget.addItem("Item 2")
    listWidget.addItem("Item 3")
    listWidget.addItem("Item 4")
    listWidget.setWindowTitle('PyQT QListwidget Demo')
    listWidget.itemClicked.connect(listWidget.Clicked)
    listWidget.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Ответы (1 шт):

Автор решения: S. Nick

Вам надо сделать объект listWidget атрибутом класса self.listWidget

import sys
from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, 
    QListWidget, QMessageBox)


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.GUI()

    def GUI(self):
        self.setGeometry(int(1920 / 2) - int(500 / 2), int(1080 / 2) - int(600 / 2), 500, 600)
        btn3 = QPushButton('Кнопка 1', self)
        btn3.move(0, 0)
        btn3.resize(500, 600)
        btn3.clicked.connect(self.click)

    def click(self):
        self.listWidget = QListWidget()                  # self.listWidget
        self.listWidget.resize(300, 500)
        self.listWidget.addItem("Item 1")
        self.listWidget.addItem("Item 2")
        self.listWidget.addItem("Item 3")
        self.listWidget.addItem("Item 4")
        self.listWidget.itemClicked.connect(self.clickedListWidget)
        self.listWidget.show()

    def clickedListWidget(self, item):
        QMessageBox.information(self, "ListWidget", "You clicked: " + item.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_w = MainWindow()
    main_w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка