使用pyinstaller转换后,程序不工作

2024-09-30 01:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

所以。。 我做了一个网络浏览器。。 代码如下:

# importing required libraries 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtWebEngineWidgets import * 
from PyQt5.QtPrintSupport import * 
import os 
import sys 
  
# main window 
class MainWindow(QMainWindow): 
  
    # constructor 
    def __init__(self, *args, **kwargs): 
        super(MainWindow, self).__init__(*args, **kwargs) 
  
        # creating a tab widget 
        self.tabs = QTabWidget() 
  
        # making document mode true 
        self.tabs.setDocumentMode(True) 
  
        # adding action when double clicked 
        self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick) 
  
        # adding action when tab is changed 
        self.tabs.currentChanged.connect(self.current_tab_changed) 
  
        # making tabs closeable 
        self.tabs.setTabsClosable(True) 
  
        # adding action when tab close is requested 
        self.tabs.tabCloseRequested.connect(self.close_current_tab) 
  
        # making tabs as central widget 
        self.setCentralWidget(self.tabs) 
  
        # creating a status bar 
        self.status = QStatusBar() 
  
        # setting status bar to the main window 
        self.setStatusBar(self.status) 
  
        # creating a tool bar for navigation 
        navtb = QToolBar("Navigation") 
  
        # adding tool bar tot he main window 
        self.addToolBar(navtb) 
  
        # creating back action 
        back_btn = QAction("Back", self) 
  
        # setting status tip 
        back_btn.setStatusTip("Back to previous page") 
  
        # adding action to back button 
        # making current tab to go back 
        back_btn.triggered.connect(lambda: self.tabs.currentWidget().back()) 
  
        # adding this to the navigation tool bar 
        navtb.addAction(back_btn) 
  
        # similarly adding next button 
        next_btn = QAction("Forward", self) 
        next_btn.setStatusTip("Forward to next page") 
        next_btn.triggered.connect(lambda: self.tabs.currentWidget().forward()) 
        navtb.addAction(next_btn) 
  
        # similarly adding reload button 
        reload_btn = QAction("Reload", self) 
        reload_btn.setStatusTip("Reload page") 
        reload_btn.triggered.connect(lambda: self.tabs.currentWidget().reload()) 
        navtb.addAction(reload_btn) 
  
        # creating home action 
        home_btn = QAction("Home", self) 
        home_btn.setStatusTip("Go home") 
  
        # adding action to home button 
        home_btn.triggered.connect(self.navigate_home) 
        navtb.addAction(home_btn) 
  
        # adding a separator 
        navtb.addSeparator() 
  
        # creating a line edit widget for URL 
        self.urlbar = QLineEdit() 
  
        # adding action to line edit when return key is pressed 
        self.urlbar.returnPressed.connect(self.navigate_to_url) 
  
        # adding line edit to tool bar 
        navtb.addWidget(self.urlbar) 
  
        # similarly adding stop action 
        stop_btn = QAction("Stop", self) 
        stop_btn.setStatusTip("Stop loading current page") 
        stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop()) 
        navtb.addAction(stop_btn) 
  
        # creating first tab 
        self.add_new_tab(QUrl('None'), 'Homepage') 
  
        # showing all the components 
        self.show() 
  
        # setting window title 
        self.setWindowTitle("WhirlBrowser") 
  
    # method for adding new tab 
    def add_new_tab(self, qurl = None, label ="Blank"): 
  
        # if url is blank 
        if qurl is None: 
            qurl = QUrl('None') 
  
        # creating a QWebEngineView object 
        browser = QWebEngineView() 
  
        # setting url to browser 
        browser.setUrl(qurl) 
  
        # setting tab index 
        i = self.tabs.addTab(browser, label) 
        self.tabs.setCurrentIndex(i) 
  
        # adding action to the browser when url is changed 
        # update the url 
        browser.urlChanged.connect(lambda qurl, browser = browser: 
                                   self.update_urlbar(qurl, browser)) 
  
        # adding action to the browser when loading is finished 
        # set the tab title 
        browser.loadFinished.connect(lambda _, i = i, browser = browser: 
                                     self.tabs.setTabText(i, browser.page().title())) 
  
    # when double clicked is pressed on tabs 
    def tab_open_doubleclick(self, i): 
  
        # checking index i.e 
        # No tab under the click 
        if i == -1: 
            # creating a new tab 
            self.add_new_tab() 
  
    # wen tab is changed 
    def current_tab_changed(self, i): 
  
        # get the curl 
        qurl = self.tabs.currentWidget().url() 
  
        # update the url 
        self.update_urlbar(qurl, self.tabs.currentWidget()) 
  
        # update the title 
        self.update_title(self.tabs.currentWidget()) 
  
    # when tab is closed 
    def close_current_tab(self, i): 
  
        # if there is only one tab 
        if self.tabs.count() < 2: 
            # do nothing 
            return
  
        # else remove the tab 
        self.tabs.removeTab(i) 
  
    # method for updating the title 
    def update_title(self, browser): 
  
        # if signal is not from the current tab 
        if browser != self.tabs.currentWidget(): 
            # do nothing 
            return
  
        # get the page title 
        title = self.tabs.currentWidget().page().title() 
  
        # set the window title 
        self.setWindowTitle("% s - WhirlBrowser" % title) 
  
    # action to go to home 
    def navigate_home(self): 
        self.tabs.currentWidget().setUrl(QUrl("None"))
  
    # method for navigate to url 
    def navigate_to_url(self): 
  
        # get the line edit text 
        # convert it to QUrl object 
        q = QUrl(self.urlbar.text()) 
  
        # if scheme is blank 
        if q.scheme() == "": 
            # set scheme 
            q.setScheme("http") 
  
        # set the url 
        self.tabs.currentWidget().setUrl(q) 
  
    # method to update the url 
    def update_urlbar(self, q, browser = None): 
  
        # If this signal is not from the current tab, ignore 
        if browser != self.tabs.currentWidget(): 
  
            return
  
        # set text to the url bar 
        self.urlbar.setText(q.toString()) 
  
        # set cursor position 
        self.urlbar.setCursorPosition(0) 
  
# creating a PyQt5 application 
app = QApplication(sys.argv) 
  
# setting name to the application 
app.setApplicationName("WhirlBrowser") 
  
# creating MainWindow object 
window = MainWindow() 
  
# loop 
app.exec_() 

当我执行它的时候,它总是运行良好。。 当我把它转换成exe时。。 (我使用了pyinstaller)

程序未打开,并留下错误消息: Error!

我还添加了所需的dll文件,如图所示。。 (libEGL.dll、libGLESv2.dll、d3dcompiler43.dll)

这就是我要说的

你能想出来并告诉我有什么问题吗

specs:
OS: Windows 7 SP1
Python Version: 3.7.0
PyQt version: 5.1
Pyinstaller Version: 4.1

Tags: thetoselfbrowsercreatingurltitleis

热门问题