2017-01-04 12 views
2

"Open Input File:"と "Run"という2つのボタンを持つguiを作成しました。Qt:ボタンが押される前にスクリプトが実行される

「Open Input File:」をクリックすると、ファイルを入力として選択して「Run」をクリックすると、スクリプトrunScrapyが開始されます。

ボタンが設定されている部分は、次のようになります。

def retranslateUi(self, MainWindow): 
    _translate = QtCore.QCoreApplication.translate 
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
    self.pushButton.setText(_translate("MainWindow", "Open Input File:")) 
    self.pushButton.clicked.connect(self.showDialog) 
    self.pushButton_2.setText(_translate("MainWindow", "Run")) 
    self.pushButton_2.clicked.connect(self.runScrapy) 
    self.label.setText(_translate("MainWindow", "Happy Scraping")) 

def showDialog(self): 
    fileName = QFileDialog.getOpenFileName() 
    if fileName: 
     global file 
     file = fileName[0] 
     print(file) 

def runScrapy(self): 
    process = CrawlerProcess() 
    process.crawl(BasicSpider) 
    process.start() # the script will block here until the crawling is finished 

しかし、代わりにpushButton_2がクリックされたときに「runScrapy」を実行するので、「runScrapyは、」私はこのスクリプトを起動した直後に実行を開始します。私は理由を理解できません。なぜなら、あなたは「Open Input File:」をクリックした後にshowDialogがポップアップするだけなので。

Q: runButton_2がクリックされたときにrunScrapyが実行されるようにコードを変更するにはどうすればよいですか?

ありがとうございます!

答えて

2

Qtイベント処理から始めてください。

if __name__ == "__main__": 
app = QtGui.QApplication(sys.argv) 
# set your window/mainwindow here 
sys.exit(app.exec_()) 

たぶん、このチュートリアルでも役立ちます。Qt GUI app with python

関連する問題