[英]Pyqt5 how to set URL and show the page
我正在研究 python 並制作書簽 function 以供練習。 現在我可以將 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_()
我不明白您為什么將文本放在引號內。 一般來說,如果你有一個字符串並且你想將它轉換為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)
我也在研究 pyqt5 織帶,但我不明白為什么我們需要 QUrl() 才能導航到 url
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.