Мое окно закрылось сразу же после запуска моего кода - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь отобразить окно, в которое я хочу ввести некоторые параметры, но оно пустое и закрывается сразу после завершения функции.

Может кто-нибудь сказать мне, что не так в моем коде, пожалуйста? (Я пытался работать с QApplication, но мое программное обеспечение (QGIS) упало)

Вот мой код:

import sys
import time
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QWidget, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize    

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        #...
        self.setMinimumSize(QSize(320, 140))    
        self.setWindowTitle("Test") 
        #...
        self.label_1 = QLabel(self)
        self.label_1.setText('Numéro du département étudié :')
        self.line_1 = QLineEdit(self)
        #...
        self.line_1.move(100, 20)
        self.line_1.resize(200, 32)
        self.label_1.move(40, 20)
        #...
        self.label_2 = QLabel(self)
        self.label_2.setText('Nombre de points de départ :')
        self.line_2 = QLineEdit(self)
        #...
        self.line_2.move(100, 60)
        self.line_2.resize(200, 32)
        self.label_2.move(40, 60)
        #...
        self.label_3 = QLabel(self)
        self.label_3.setText("Chemin d'accès jusqu'a la liste des départements : (doit finir par un '/')")
        self.line_3 = QLineEdit(self)
        #...
        self.line_3.move(100, 100)
        self.line_3.resize(200, 32)
        self.label_3.move(40, 100)
        #...
        pybutton = QPushButton('Valider ma saisie', self)
        pybutton.clicked.connect(self.clickMethod)
        pybutton.clicked.connect(self.close)
        pybutton.resize(200,32)
        pybutton.move(80, 140)        
        #...
    def clickMethod(self):
        params = []
        params.append(self.line_1.text())
        params.append(self.line_2.text())
        params.append(self.line_3.text())
        #...
    def start(self):
        mainWin = MainWindow()
        mainWin.show()

1 Ответ

0 голосов
/ 02 июля 2019

A QApplication необходимо создать перед созданием QWidget.

Импорт:

from PyQt5.QtWidgets import QApplication

Создать приложение:

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

Весь ваш код будет:

import sys
import time
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        #...
        self.setMinimumSize(QSize(320, 140))
        self.setWindowTitle("PyQt Line Edit example (textfield) - pythonprogramminglanguage.com")
        #...
        self.label_1 = QLabel(self)
        self.label_1.setText('Numéro du département étudié :')
        self.line_1 = QLineEdit(self)
        #...
        self.line_1.move(100, 20)
        self.line_1.resize(200, 32)
        self.label_1.move(40, 20)
        #...
        self.label_2 = QLabel(self)
        self.label_2.setText('Nombre de points de départ :')
        self.line_2 = QLineEdit(self)
        #...
        self.line_2.move(100, 60)
        self.line_2.resize(200, 32)
        self.label_2.move(40, 60)
        #...
        self.label_3 = QLabel(self)
        self.label_3.setText("Chemin d'accès jusqu'a la liste des départements : (doit finir par un '/')")
        self.line_3 = QLineEdit(self)
        #...
        self.line_3.move(100, 100)
        self.line_3.resize(200, 32)
        self.label_3.move(40, 100)
        #...
        pybutton = QPushButton('Valider ma saisie', self)
        pybutton.clicked.connect(self.clickMethod)
        #pybutton.clicked.connect(self.close)
        pybutton.resize(200,32)
        pybutton.move(80, 140)
        #...
    def clickMethod(self):
        params = []
        params.append(self.line_1.text())
        params.append(self.line_2.text())
        params.append(self.line_3.text())
        params.append(self.line_4.text())
        params.append(self.line_5.text())
        params.append(self.line_6.text())
        #...


if __name__ == '__main__':

    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec_())
...