0

これら 2 つのプログラムは同じように動作しますが、#HERE でマークされた行に小さな違いがあります。誰かが違いを説明できますか?これらの行が何をするのか完全には理解していません。

プログラム 1:

import sys
from PyQt4 import QtGui, QtCore

class myform(QtGui.QDialog):
    def __init__(self, parent=None):
        super(myform, self).__init__(parent)

        form = QtGui.QFormLayout()
        form.setHorizontalSpacing(0)

        myedit = QtGui.QLineEdit()
        form.addWidget(myedit)

        self.setLayout(form)
        self.setGeometry(300, 300, 400, 0)
        self.setWindowTitle('test')

        myedit.textChanged.connect(self.editchange)   # new style signal slot connections

        self.show()                      # HERE

    def editchange(self,data):
        print "editchange:", data

if __name__ == "__main__":

    app = QtGui.QApplication([])
    ex = myform()

    #ex.exec_()                          # HERE
    #sys.exit(app.closeAllWindows())     # HERE

    sys.exit(app.exec_())                # HERE

プログラム #2:

import sys
from PyQt4 import QtGui, QtCore

class myform(QtGui.QDialog):
    def __init__(self, parent=None):
        super(myform, self).__init__(parent)

        form = QtGui.QFormLayout()
        form.setHorizontalSpacing(0)

        myedit = QtGui.QLineEdit()
        form.addWidget(myedit)

        self.setLayout(form)
        self.setGeometry(300, 300, 400, 0)
        self.setWindowTitle('test')

        myedit.textChanged.connect(self.editchange)   # new style signal slot connections

        #self.show()                      # HERE

    def editchange(self,data):
        print "editchange:", data

if __name__ == "__main__":

    app = QtGui.QApplication([])
    ex = myform()

    ex.exec_()                          # HERE
    sys.exit(app.closeAllWindows())     # HERE

    #sys.exit(app.exec_())                # HERE
4

1 に答える 1

0

プログラム #1 はexec_QApplication ( http://pyqt.sourceforge.net/Docs/PyQt4/qapplication.html#exec ) から呼び出します。

プログラム #2 exec_QDialog からの呼び出し ( http://pyqt.sourceforge.net/Docs/PyQt4/qdialog.html#exec ): 結果のダイアログはモーダルです。

QDialog を使用するため、最終的な動作は同じです。

この場合:

app = QtGui.QApplication([])
ex = myform()
ex.show()
app.exec_()

以下と同じです:

app = QtGui.QApplication([])
ex = myform()
ex.exec_()
于 2013-08-02T00:28:18.867 に答える