PyQt QWebEngineView交互

用python与PyQt5、QtDesigner写了一个小程序,现在在这个程序界面里插入了一个显示百度地图网页的QWebEngineView,我想问一下,有没有一种方法,当我的程序内部的一个列表里添加了一个地点名称的时候,就让这个地点在QWebEngineView中显示出来呢?谢谢大家了!

我使用GPT4来帮助你找答案,这块比较合适用GPT来回答,一大块的代码给你才可以。
下面是GPT4的答案,我做了少量修改,适配一下你的问题

首先,你需要通过调用百度地图API在百度地图中搜索地点并显示。然后,你可以在列表添加新地点时,更新QWebEngineView的网页来实现这个功能。

以下是一个大致的流程:

  1. 建立一个百度地图的网页,这个网页可以接收一个参数作为地点的名字,然后在百度地图上搜索并显示这个地点。

  2. 在你的程序中,当列表添加了一个新的地点,你可以生成一个新的网页URL,这个URL包含了新地点的名字作为参数。

  3. 使用QWebEngineView的load方法加载这个新的URL。这样就可以在QWebEngineView中显示新添加的地点了。

以下是一些相关的Python和PyQt5代码:

from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        
        self.web_view = QWebEngineView(self)
        
        # 假设你的列表叫做self.location_list
        self.location_list = QListWidget(self)
        self.location_list.itemAdded.connect(self.update_location)
        
        # 其他代码...
    
    def update_location(self):
        # 假设新添加的地点在列表的最后
        new_location = self.location_list.item(self.location_list.count() - 1).text()
        
        # 假设你的百度地图网页的URL是http://example.com/baidu_map.html
        # 并且它接收一个名为location的参数
        new_url = f"http://example.com/baidu_map.html?location={new_location}"
        
        self.web_view.load(QUrl(new_url))

请注意,以上代码只是一个基本示例,你需要根据你的具体情况和需求进行调整。

另外,你需要确保你的百度地图网页可以正确地接收并处理URL参数。这可能需要你有一些HTML和JavaScript的知识。


如果有帮助,请点击一下采纳该答案~谢谢