首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在SSL中嵌入划线图:握手失败,PyQt5错误

在SSL中嵌入划线图:握手失败,PyQt5错误
EN

Stack Overflow用户
提问于 2019-07-16 18:01:19
回答 1查看 2.2K关注 0票数 2

我正在尝试构建一个GUI来帮助我的团队以信号的形式快速比较大量的测试数据。我设想了高度模块化的交互式绘图,其格式类似于Audacity。我正在用PyQt5构建图形用户界面,目前正在尝试决定在绘图中使用什么;我计划使用matplotlib,但对于预期的用途来说,它将非常笨重。Plotly和/或Dash似乎更有前途;然而,它们只在浏览器中显示交互式绘图,因此我需要使用GUI中嵌入的某种浏览器显示。因此,请使用QWebEngineView。

我的图形用户界面本身将在我开发的QTabWidget中的选项卡中包含绘图,而其他选项卡中填充的是占位符matplotlib绘图,我想要替换它们,因为它们缺乏交互性。我可以在浏览器中成功显示网页(google.com)。

在PyQt5图形用户界面的QTabWidget中成功显示QWebEngineView对象中的网页

但是,当我将它指向我的Dash plot的地址时(出于开发目的,我在另一个内核中运行的一个单独程序中创建了这个地址),它给出一个错误:这个站点不能提供安全连接:

虚线图不显示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 On the GUI's Kernel, the error is "[29477:29512:0716/121826.555372:ERROR:ssl_client_socket_impl.cc(1050)] handshake failed; returned -1, SSL error code 1, net_error -107".

In the kernel running the dash plot, the message is: 
127.0.0.1 - - [16/Jul/2019 12:18:26] code 400, message Bad request version ('**À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x00')

127.0.0.1 - - [16/Jul/2019 12:18:26] "µ±ª~ÜÎÌDñB¤¦jËfM½;*÷hå¸GÛ¼i©Tè**À+À/À,À0̨̩ÀÀ/5" HTTPStatus.BAD_REQUEST -

这只在QTabsWidget中存在。Dash plot在单独的独立应用程序中显示良好(如下面提供的占位符Dash plot的工作代码)。

在简单的PyQt5图形用户界面中成功显示虚线图

我在谷歌上搜索了这个错误,但没有找到相关的信息。我不明白为什么这在第一个QWebEngineView上运行得很好,但当我将它指向我的破折线图时却失败了,特别是考虑到我能够在我精简的原型代码中查看url中的破折线图。

虚线图工作代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
import threading
from PyQt5 import QtWidgets
import dash
import dash_core_components as dcc
import dash_html_components as html


def run_dash(data, layout):
    app = dash.Dash()
    app.layout = html.Div(children=[
        html.H1(children='Hello Dash'),
        html.Div(children='''
            Dash: A web application framework for Python.
        '''),
        dcc.Graph(
            id='example-graph',
            figure={
                'data': data,
                'layout': layout
            })
        ])
    app.run_server(debug=False)


class MainWindow(QtWidgets.QMainWindow):
    pass

if __name__ == '__main__':
    data = [
        {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
        {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
    layout = {
        'title': 'Dash Data Visualization'
    }

    threading.Thread(target=run_dash, args=(data, layout), daemon=True).start()
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

在运行这段代码时,内核提供绘图的地址。在我的机器上,它是http://127.0.0.1:8050

原型GUI嵌入代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)

web = QWebEngineView()
#web.load(QUrl("https://www.google.com"))
web.load(QUrl("http://127.0.0.1:8050"))
web.show()

sys.exit(app.exec ())

我的实际PyQt5图形用户界面中的代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
web = QWebEngineView()
# web.load(QUrl("https://www.google.com")) web.load(QUrl("https://127.0.0.1:8050/"))
web.show()
self.ui.TabsContainer.addTab(web, "QWebEngineView Object") 
# TabsContainer is a QTabsWidget

如何绕过阻止我在GUI中嵌入绘图的错误?

编辑:我认为这可能与QTabWidget有关,所以我编写了以下简单的代码来测试这一想法,我的Dash图显示得很好。然而,尽管它是以相同的方式构造的,但它不会显示在我需要它的主多线程GUI中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class CustomMainWindow(QMainWindow):  # MainWindow is a subclass of QMainWindow
    def __init__(self, *args, **kwargs):
        super(CustomMainWindow, self).__init__(*args, **kwargs)
#        a = 1

        self.setWindowTitle("Window Title")

        label = QLabel("Label")
        label.setAlignment(Qt.AlignCenter)
#        
        layout = QVBoxLayout()
#        layout.addWidget(Color('red'))
#        layout.addWidget(Color('green'))
        layout.addWidget(Color('blue'))

        TW = QTabWidget()


        web1 = QWebEngineView()
        web1.load(QUrl("http://www.google.com"))
        #web1.load(QUrl("http://127.0.0.1:8050"))

        web2 = QWebEngineView()
        web2.load(QUrl("http://127.0.0.1:8050"))

        TW.addTab(web1, 'web1')
        TW.addTab(web2, 'web2')
        layout.addWidget(TW)


        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)        

class Color(QWidget):

    def __init__(self, color, *args, **kwargs):
        super(Color, self).__init__(*args, **kwargs)
        self.setAutoFillBackground(True)

        palette = self.palette()
        palette.setColor(QPalette.Window, QColor(color))
        self.setPalette(palette)


app = QApplication(sys.argv)

CMWindow = CustomMainWindow()  # Instead of using QMainWindow, we now use our custom window subclassed from QMainWindow
CMWindow.show()
sys.exit(app.exec ())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-18 19:50:02

好吧,答案很简单:

在我发布的工作示例中,我加载了QUrl("http://127.0.0.1:8050")。在不起作用的代码中,我使用了https://。显然,Dash图没有使用https。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57063046

复制
相关文章
Networks 09 - SSL握手
SSL握手 过程 客户端给出协议版本号, 客户端生成的随机数(client random), 以及客户端支持的加密方式. 服务器确认双方使用的加密方法, 并给出数字证书, 以及一个服务器生成的随机
Reck Zhang
2021/08/11
2530
Networks 09 - SSL握手
tcp握手失败怎么办_TCP协议握手
可以看到,这些问题都是关于 TCP 是如何处理这些异常场景的,我们在学 TCP 连接建立和断开的时候,总是以为这些过程能如期完成。
全栈程序员站长
2022/10/03
9060
tcp握手失败怎么办_TCP协议握手
SSL协议概述和握手过程
SSL协议的机密性主要依靠的是对称加密体质,在通信过程中,使用对称密码进行加密解密保证信息的安全性。
全栈程序员站长
2022/09/01
2.3K0
pyecharts 嵌入 PyQt5
之前介绍过用pyecharts显示地图。下面先生成显示中国各省人口地图的网页。 from pyecharts import options as opts from pyecharts.charts import Map, Page from pyecharts.faker import Collector, Faker def readData(path): populations = list() with open(path,"rt",encoding="utf8") as f:#读
用户6021899
2020/08/13
3.8K0
pycharm中pyqt5使用方法_pycharm安装pyqt5失败
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174826.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
6310
pycharm中pyqt5使用方法_pycharm安装pyqt5失败
解决envoy TLS握手失败问题
在我们使用envoy替换原有云上alb的过程中,遇到了加密套件不兼容的问题,导致有大量大握手失败,对比envoy文档上的支持,我们发现envoy相对于云上ALB,少了以下六个cipher,除了ECDHE椭圆加密算法外剩余四个都是比较常用的,虽然这四个目前都是弱,但是不能因为这个损失用户,还是要先兼容再考虑升级问题。
有点技术
2021/06/25
1K0
在应用中嵌入Tomcat
很多 Java web 应用和服务,包括开源的和商业化的(比如 Alfresco, iRise, Confluence等),都倾向于将 Apache Tomcat Servlet 引擎整个嵌入到他们的分发包中。Atlatisan公司甚至只支持他们自己提供的嵌入式Tomcat 包,不再提供 WAR/EAR 形式的分发包。这些安装包包含了整个 Tomcat 引擎和配置文件,看起来确实有点大材小用。在大多数配置中,默认的配置文件甚至从来不会变动。真的有办法可以在代码中启动 Tomcat 并且只需要 tomcat 的 jar 文件作为依赖么?在下面的教程中,我们将会对 Jetty (Jetty 是一个为此目的而设计的一种嵌入式 servlet 引擎)进行测试,同时还会展示如何将 Jetty 迁移到 Tomcat 。
哲洛不闹
2018/09/18
2.3K0
在应用中嵌入Tomcat
matplotlib图形 嵌入 PyQt5
只需从matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg类继承一个画布控件,然后就可以当成是 PyQt5 普通控件那样添加到图形界面即可。详情可参考如下例子:
用户6021899
2019/08/14
2.3K0
修改openssl源码控制ssl握手过程
上篇文章 结尾说道使用openssl s_client命令无控制握手过程,本篇将使用修改源码方式控制ssl握手过程
angelo
2019/07/22
5.7K0
Nginx HTTP Server中的SSL证书错误
安装SSL证书时快速解决Nginx HTTP服务器错误! Nginx HTTP Server是免费的开放源代码,它附带了高性能的HTTP服务器和反向代理。Nginx HTTP Server由于其高性能,可持续性,高级功能,易于配置等特性而被强烈推荐,因此Nginx HTTP Server是HTTP服务器中最受欢迎的开源软件。 作为开源代码,Nginx HTTP服务器的安全性非常重要。由于Nginx HTTP服务器使用量大,存在增加在线数据漏洞的可能性。因此Web安全专家建议Nginx HTTP Serv
企鹅号小编
2018/01/24
2.1K0
Nginx HTTP Server中的SSL证书错误
【技术文】SSL握手中的几个密码
SSL的加密为了平衡安全和效率,做了很多工作,为了SSL的加密过程足够安全,SSL引入了很多密码:
运维部落
2020/08/17
8690
【技术文】SSL握手中的几个密码
Wireshark抓包分析SSL握手的过程
刚才用图和文字描述讲解了SSL协议的交互过程HTTPS协议--通过SSL协议实现安全保障的过程和原理。
清菡
2022/06/21
3.4K0
Wireshark抓包分析SSL握手的过程
在 HTML 中嵌入 PHP 代码
PHP 天生对 Web 和 HTML 友好,在 PHP 诞生之初,主要用于在 Web 1.0 中构建个人主页,那个时候,PHP 代表的是 Personal Home Page,随着 Web 互联网的发展,在 Web 2.0 时代,PHP 进一步进化为 PHP:Hypertext Preprocessor,即超文本处理器,而 HTML 则是 HyperText Markup Language 的缩写,也就是超文本标记语言。
学院君
2020/05/28
6.3K0
嵌入式学习路线图
可能是最近跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。
刘盼
2018/03/01
2.5K0
嵌入式学习路线图
嵌入式学习路线图
可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类。 业务类 业务类更多的是在应用程序。随着移动互联网的快速发展出现一批 UI 设计师,这里的设计师是指 APP 的界面设计,在注重用户体验的今天对于界面的设计出现水涨船高的需求。一时间 Android, IOS 的 APP 开发者如雨后春笋般涌出,待遇也是不低。高级的应用程序员除了界面的开发外也会涉及程序内部的业务逻辑,现
刘盼
2018/03/16
1.9K0
嵌入式学习路线图
PyQt5:QChart绘制折线图(1)
注意:在下载过程中,我之前安装的是 Pyqt5.11,会把PyQt5.11卸载,安装PyQt5.12,PyQtChart5.12。
何其不顾四月天
2023/03/10
2.4K0
PyQt5:QChart绘制折线图(1)
PyQt5:常见错误整理
PyQt5在Windows10下安装需要很多依赖库,但是这些依赖库又有版本限制,试了好几次,找到相对均衡的安装版本。
新码农
2020/04/17
5570
在EasyUI的DataGrid中嵌入Combobox
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/46687767
DannyHoo
2018/09/13
3.8K0
在EasyUI的DataGrid中嵌入Combobox
Python: PyQt5在Pycharm中的配置
文章背景:Qt是众多GUI组件中极其优秀的组件,不仅可以开发桌面应用,还可以开发移动应用,所以Qt是非常值得学习的组件。下面就来学习如何在Pycharm中配置PyQt5。
Exploring
2022/12/18
3.7K0
Python: PyQt5在Pycharm中的配置
在Excel公式中嵌入查找表
通常,我们会在工作表中放置查找表,然后使用公式在该表中查找相对应的值。然而,这也存在风险,就是用户可能会在删除行时无意识地将查找表中的内容也删除,从而导致查找错误。
fanjy
2023/09/23
3070
在Excel公式中嵌入查找表

相似问题

SSL握手失败错误?

10

SSL握手失败错误

10

双向SSL ::SSL握手失败错误

11

Android SSL错误握手失败

112

SVN -握手失败: SSL错误

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文