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:脚本在按下按钮之前运行的主要内容,如果未能解决你的问题,请参考以下文章

在按下 Arduino 上的特定键盘按钮之前,如何让步进电机运行?

确定在按下按钮之前最后一个焦点的 QWidget

按下按钮时获取 PyQt4 以打开另一个 Qt 窗口

脚本停止运行按钮

STM32F4程序只有在按下复位按钮后才会运行

单击按钮时运行功能