Pyqt5如何设置URL并显示页面

Posted

技术标签:

【中文标题】Pyqt5如何设置URL并显示页面【英文标题】:Pyqt5 how to set URL and show the page 【发布时间】:2021-11-25 03:50:51 【问题描述】:

我正在学习python并制作书签功能以进行练习。 现在我可以将 url 注册到选项卡菜单。 当我按下选项卡菜单中的链接时。浏览器上什么都没有显示。 以下区域,有人请让我知道出了什么问题。 “self.browser.setUrl(QUrl(action_url))” 文本本身(action_url)看起来不错,但浏览器不显示。

整个代码是这样的。

import os
import sys

from PyQt5.QtCore import QSize, Qt, QUrl
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import (
    QAction,
    QApplication,
    QDialog,
    QDialogButtonBox,
    QFileDialog,
    QLabel,
    QLineEdit,
    QMainWindow,
    QToolBar,
    QVBoxLayout,
)



class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("http://google.com"))
        self.setCentralWidget(self.browser)
        
        # tag::navigation1[]
        navtb = QToolBar("Navigation")
        navtb.setIconSize(QSize(16, 16))
        self.addToolBar(navtb)
        
        #bookmark button
        bookmark_btn = QAction(QIcon(os.path.join("icons", "smiley.png")), "Bookmark", self)
        bookmark_btn.setStatusTip("add to bookmark")
        bookmark_btn.triggered.connect(self.add_bookmark)
        navtb.addAction(bookmark_btn)        
        navtb.addSeparator()

        # tag::menuBookmark[]   
        self.bookmark_menu = self.menuBar().addMenu("&Bookmark")        
        bookmark_select_action = QAction("http://google.com",self)
        bookmark_select_action.triggered.connect(self.navigate_bookmark)
        self.bookmark_menu.addAction(bookmark_select_action)
            
        self.show()

    
    # tag::bookmark[]    
    def add_bookmark(self):
        bookmark_title = self.browser.page().title()
        bookmark_url = self.browser.url().toString()
        bookmark_select_action = QAction(bookmark_url,self)
        bookmark_select_action.triggered.connect(self.navigate_bookmark)
        
        self.bookmark_menu.addAction(bookmark_select_action)
            
    
    # tag::navigationBookmark[]   
    def navigate_bookmark(self):
        action = self.sender()
        action_url = '"'+action.text()+'"'
        self.browser.setUrl(QUrl(action_url))   #this code does not function as I expected
        print(action_url)
        


app = QApplication(sys.argv)
app.setApplicationName("Mozzarella Ashbadger")
app.setOrganizationName("Mozzarella")
app.setOrganizationDomain("mozzarella.org")

window = MainWindow()

app.exec_()  

【问题讨论】:

【参考方案1】:

我不明白您为什么将文本放在引号内。一般来说,如果你有一个字符串并且你想将它转换为QUrl,请使用QUrl::fromUserInput(),也可以使用load()方法:

def navigate_bookmark(self):
    action = self.sender()
    url = QUrl.fromUserInput(action.text())
    self.browser.load(url)

另一种策略是将 QUrl 保存在 QAction 中,然后检索它:

def add_bookmark(self):
    bookmark_title = self.browser.page().title()
    bookmark_url = self.browser.url()
    bookmark_select_action = QAction(bookmark_url.toString(), self)
    bookmark_select_action.setData(bookmark_url)
    # or
    # bookmark_select_action.setProperty("url", bookmark_url)
    bookmark_select_action.triggered.connect(self.navigate_bookmark)
    self.bookmark_menu.addAction(bookmark_select_action)
def navigate_bookmark(self):
    action = self.sender()
    url = action.data()
    # or
    # url = action.property("url")
    self.browser.load(url)

【讨论】:

感谢您的评论。 感谢您的评论。我尝试了第二个。 (以下)“ url = QUrl.fromUserInput(action.text()) ” 就像执行一样! @Taniguchi 请阅读How to Ask 并查看tour

以上是关于Pyqt5如何设置URL并显示页面的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示

PyQt5 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示

pyqt5点击按钮从本地加载图片并显示在界面上

PyQt5 QWebview 刷新问题

Pyqt5右键单击并在新选项卡中打开

如何通过按下 Pyqt5 或 PyQt4 工具栏中的按钮来设置表单的显示