PyQt 5はボタンをクリックしてGUIインタフェースを終了することを実現する

11276 ワード

これを読む前提は、PyQt 5のベースフレームワークとPyQt 5の作成ボタンとトリガクリックイベント(ハイパーリンククリックジャンプ)がデフォルトで理解されていることです.さらに、現在作成されているGUIインタフェースを終了するには、ボタンをクリックする方法について説明します.ここでは3つの方法を紹介します.
メソッド1、コードは次のとおりです.
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('        GUI  ')

        self.button1 = QPushButton('  ', self)
        self.button1.clicked.connect(self.clickButtonCloseWindow)

    def clickButtonCloseWindow(self):
        self.close()


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

私たちが事件をクリックすると、self.close()文が直接実行されます.このときのself自体が私たちが現在作成しているQMainWindowウィンドウを指しているので、closeメソッドを直接呼び出せばいいです.
方法2:もちろん、ボタンをクリックして実行する関数を直接削除し、ボタンイベントを閉じたインタフェースに直接関連付けることもできます.コードは次のとおりです.
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('        GUI  ')

        self.button1 = QPushButton('  ', self)
        self.button1.clicked.connect(self.close)


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

ボタンクリックイベントをself.closeに直接関連付けていることがわかります.注意:ここのself.closeはカッコを付けてはいけません.そうしないと、エラーが発生します.
方法3:ボタンをクリックすることは、現在のQApplicationオブジェクトのインスタンスを決定し、閉じることであり、コードは以下の通りである.
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('        GUI  ')

        self.button1 = QPushButton('  ', self)
        self.button1.clicked.connect(self.clickButtonCloseWindow)

    def clickButtonCloseWindow(self):
        qApp = QApplication.instance()
        qApp.quit()


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

QApplication.instance()を使用して現在のQApplicationインスタンス化されたオブジェクトを取得し、quit()法で現在のGUIインタフェースを終了することがわかります.