我只需使用 pyQt5 设计器创建桌面应用程序即可。当我直接使用时,一切运行正常
python main.py
而我尝试使用生成.exe文件pyinstaller
当我打开该应用程序时,它正在创建 .exe 文件,它挂了。有人能解决我的问题吗?
pyinstaller --onefile main.py
或者
pyinstaller main.py
我尝试了所有这些方法。即使在终端中运行 main.exe 也无法推送任何错误。
___________main.py_________
import os
import sys
import qt5reactor
from PyQt5 import QtWidgets, QtCore, QtGui
from scrapy import signals
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
import twisted
from window import Ui_MainWindow
from quotes_scrapy.spiders.qscrapy import QscrapySpider
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__()
self.setupUi(self)
self.pushButton.pressed.connect(self.on_url_entered)
self.pushButton.pressed.connect(self.getComboValue) #Added New
self.tableWidget.horizontalHeader().setSectionResizeMode(
QtWidgets.QHeaderView.ResizeToContents
)
def crawler_results(self, item):
row = self.tableWidget.rowCount()
title = item["title"]
author = item["author"]
tags = item["tags"]
self.tableWidget.insertRow(row)
self.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(title))
self.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(author))
self.tableWidget.setItem(row, 2, QtWidgets.QTableWidgetItem(tags))
def on_url_entered(self):
configure_logging()
runner = CrawlerRunner()
runner.crawl(QscrapySpider, page_num=self.getComboValue())
for p in runner.crawlers:
p.signals.connect(self.crawler_results, signal=signals.item_scraped)
def closeEvent(self, event):
super(MainWindow, self).closeEvent(event)
twisted.internet.reactor.stop()
def getComboValue(self):
return self.comboBox.currentText()
if __name__ == "__main__":
app = QtWidgets.QApplication([])
if 'twisted.internet.reactor' not in sys.modules:
qt5reactor.install()
from twisted.internet import reactor
main_window = MainWindow()
main_window.show()
reactor.run()
答案1
这可能没用,但你可以把所有导入放在最上面。你在 main() 处有一个导入。把它放在最上面,然后再试一次,也许这会有帮助。
我还使用 Pyqt 制作了许多项目,并使用 pyinstaller 进行捆绑。它们对我来说非常有效。