簡體   English   中英

Pyqt5 如何設置 URL 並顯示頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM