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 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示