Qt:脚本在按下按钮之前运行
Posted
技术标签:
【中文标题】Qt:脚本在按下按钮之前运行【英文标题】:Qt: script runs before button is pressed 【发布时间】:2017-01-04 11:36:23 【问题描述】:我创建了一个有两个按钮的 gui:一个显示“打开输入文件:”,另一个显示“运行”。
当有人点击“打开输入文件:”时,他/她可以选择一个文件作为输入,然后当该人点击“运行”时,脚本 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”。我不明白为什么,因为 showDialog 仅在您单击“打开输入文件:”后才会弹出。
问:如何更改我的代码以使 runScrapy 仅在单击 pushButton_2 时运行?
提前致谢!
【问题讨论】:
【参考方案1】:你应该从 Qt 事件处理开始。
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
# set your window/mainwindow here
sys.exit(app.exec_())
也许这个教程也有帮助:Qt GUI app with python
【讨论】:
以上是关于Qt:脚本在按下按钮之前运行的主要内容,如果未能解决你的问题,请参考以下文章