首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >超方法中的误差

超方法中的误差
EN

Stack Overflow用户
提问于 2017-12-21 08:11:08
回答 1查看 180关注 0票数 0

我尝试使用PyQt5将两个椭圆与一条线连接起来。要做到这一点,请稍加修改github的类。我使用的不是PySide,而是PyQt5。代码摘自这里:https://github.com/PySide/Examples/blob/master/examples/graphicsview/diagramscene/diagramscene.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Arrow(QGraphicsLineItem):
    def __init__(self, start_item, end_item, parent=None, scene=None):
        super(Arrow, self).__init__(parent, scene)

        self.arrowHead = QPolygonF()

        self.my_start_item = start_item
        self.my_end_item = end_item
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
        self.my_color = QtCore.Qt.black
        self.setPen(QPen(self.my_color, 2, QtCore.Qt.SolidLine,
                    QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin))

    def set_color(self, color):
        self.my_color = color

    def start_item(self):
        return self.my_start_item

    def end_item(self):
        return self.my_end_item

    def boundingRect(self):
        extra = (self.pen().width() + 20) / 2.0
        p1 = self.line().p1()
        p2 = self.line().p2()
        return QtCore.QRectF(p1, QtCore.QSizeF(p2.x() - p1.x(), p2.y() - p1.y())).normalized().adjusted(-extra, -extra, extra, extra)

    def shape(self):
        path = super(Arrow, self).shape()
        path.addPolygon(self.arrowHead)
        return path

    def update_position(self):
        line = QtCore.QLineF(self.mapFromItem(self.my_start_item, 0, 0), self.mapFromItem(self.my_end_item, 0, 0))
        self.setLine(line)

    def paint(self, painter, option, widget=None):
        if self.my_start_item.collidesWithItem(self.my_end_item):
            return

        my_start_item = self.my_start_item
        my_end_item = self.my_end_item
        my_color = self.my_color
        my_pen = self.pen()
        my_pen.setColor(self.my_color)
        arrow_size = 20.0
        painter.setPen(my_pen)
        painter.setBrush(self.my_color)

        center_line = QtCore.QLineF(my_start_item.pos(), my_end_item.pos())
        end_polygon = my_end_item.polygon()
        p1 = end_polygon.at(0) + my_end_item.pos()

        intersect_point = QtCore.QPointF()
        for i in end_polygon:
            p2 = i + my_end_item.pos()
            poly_line = QtCore.QLineF(p1, p2)
            intersect_type, intersect_point = poly_line.intersect(center_line)
            if intersect_type == QtCore.QLineF.BoundedIntersection:
                break
            p1 = p2

        self.setLine(QtCore.QLineF(intersect_point, my_start_item.pos()))
        line = self.line()

        angle = math.acos(line.dx() / line.length())
        if line.dy() >= 0:
            angle = (math.pi * 2.0) - angle

        arrow_p1 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi / 3.0) * arrow_size,
                                              math.cos(angle + math.pi / 3) * arrow_size)
        arrow_p2 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrow_size,
                                              math.cos(angle + math.pi - math.pi / 3.0) * arrow_size)

        self.arrowHead.clear()
        for point in [line.p1(), arrow_p1, arrow_p2]:
            self.arrowHead.append(point)

        painter.drawLine(line)
        painter.drawPolygon(self.arrowHead)
        if self.isSelected():
            painter.setPen(QPen(my_color, 1, QtCore.Qt.DashLine))
            my_line = QtCore.QLineF(line)
            my_line.translate(0, 4.0)
            painter.drawLine(my_line)
            my_line.translate(0, -8.0)
            painter.drawLine(my_line)

创建箭头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  arrow = Arrow(start, end, scene=scene)
  scene.addItem(arrow)
  arrow.update_position()

运行代码时发生的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 09:25:53

PyQt5是由河岸计算公司创建的Qt5的包装器,PySide是由Qt的同一创建者创建的Qt4的包装器。除了Qt4和Qt5有许多不同,因此这些库根本不兼容,例如,在您的示例中,PySide项可以将场景作为参数传递,但对于PyQt4或PyQt5,则没有必要使用该参数:

PySide:

类PySide.QtGui.QGraphicsLineItem([parent=None,scene=None]) 类PySide.QtGui.QGraphicsLineItem(行[,parent=None,scene=None]) PySide.QtGui.QGraphicsLineItem类(x1,y1,x2,y2[,parent=None,scene=None])

PyQt5:

QGraphicsLineItem(父母: QGraphicsItem =无) QGraphicsLineItem(QLineF,父母: QGraphicsItem = None) QGraphicsLineItem(浮动,父: QGraphicsItem =无)

除此之外,还有类Signal()pyqtSignal,很明显,从Qt4到Qt5的步骤是将一些属于QtGui的类分离为QtWidgets。

在您的情况下,解决方案是消除场景参数,因为它会更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Arrow(QGraphicsLineItem):
    def __init__(self, start_item, end_item, parent=None, scene=None):
        super(Arrow, self).__init__(parent, scene)

至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Arrow(QGraphicsLineItem):
    def __init__(self, start_item, end_item, parent=None):
        super(Arrow, self).__init__(parent)

我已经将该项目翻译为PyQt5,您可以在下面的链接中检查它。

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

https://stackoverflow.com/questions/47928724

复制
相关文章
线性回归 均方误差_线性回归模型中随机误差项的意义
刚开始学习机器学习的时候就接触了均方误差(MSE,Mean Squared Error),当时就有疑惑,这个式子是怎么推导的,但是因为懒没有深究。今天看到了唐宇迪老师的机器学习课程,终于理解他是怎么推导的了。一定要一步一步看下去,别看他公式这么多,随便认真看一下就能理解的!
全栈程序员站长
2022/11/11
9610
线性回归 均方误差_线性回归模型中随机误差项的意义
CSS中关于元素居中的方法总结(超全)
css中一个很重要的问题,就是关于元素的居中,包括水平居中,垂直居中,本文就是为大家总结了:css中对于行内元素与块级元素不同的居中方法.
用户9914333
2022/07/21
2.9K0
详谈R中散点图添加误差线的细节
加载R包 library(tidyverse) library(ggsci) 导入数据 df <- read_tsv("data.txt") 数据可视化 df %>% ggplot(aes(case_control,logCPM)) + geom_jitter(aes(fill=case_control,color=case_control), pch=21,width=0.1,size=2)+ stat_boxplot(geom="errorbar",widt
R语言数据分析指南
2022/12/22
1.7K0
详谈R中散点图添加误差线的细节
注意:C++中double的表示是有误差的
注意:C++中double的表示是有误差的,直接通过下面的例子看一下 1 #include<iostream> 2 using namespace std; 3 int main() 4 {
用户1215536
2018/02/05
9070
测量误差?什么误差?测量什么?
买了一台普源的DM3058,官网售价3980元,用来测量100nA误差范围内的电流,由于预算有限,供应商同时推荐了固纬GDM-8341万用表,分辨率可测到10nA。某宝售价2260元,与DM3058相比省下来1720元!
硬件大熊
2022/06/23
9000
测量误差?什么误差?测量什么?
误差函数
其中, 表示神经网络的输出, 表示监督数据( 采用 one-hot 编码), 表示数据的维度。
hotarugali
2022/03/03
9310
Matlab 计算均方误差MSE的三种方法
ytest 测试集y,真实的y值,是一维数组; ytest_fit 基于测试集 x 预测的y值,是一维数组; test_error 是预测误差。
全栈程序员站长
2022/11/11
3K0
标准误差
标准误差是当前应用最广泛、最基本的一种随机误差的表示方法,当标准误差求得后,平均误差和极限差即可求得故国际上普遍采用标准误差作为实验结果质量的数字指标
为为为什么
2023/02/21
1.1K0
origin带误差线的柱状图_怎么加误差棒
软件版本:OriginPro 2021b (64-bit) SR2 9.8.5.212 (学习版) 本期目标:
全栈程序员站长
2022/11/11
6.5K0
origin带误差线的柱状图_怎么加误差棒
mse均方误差例题_误差函数计算器
本人最近需要写多个仿真,需要大量用到MSE(均方误差)计算,于是干脆将MSE运算封装为函数,后续使用直接进行调用即可。
全栈程序员站长
2022/11/19
9480
超参的搜索方法整理
网格搜索通过查找搜索范围内的所有的点,来确定最优值。它返回目标函数的最大值或损失函数的最小值。给出较大的搜索范围,以及较小的步长,网格搜索是一定可以找到全局最大值或最小值的。
DuncanZhou
2018/09/04
2K0
超参的搜索方法整理
逐渐增加样本训练模型实现误差最小且误差值接近1.41%的最小P(误差)值。
Q1_final.m clear all; close all; clc; %% Set-Up: given parameters and validation data % Given parameters n = 2; % number of feature dimensions N_train = [10;100;1000]; % number of training samples N_val = 10000; % nu
裴来凡
2022/05/28
9400
逐渐增加样本训练模型实现误差最小且误差值接近1.41%的最小P(误差)值。
在局部误差边界条件下的随机子梯度方法的加速
今天我们主要针对Stochastic Subgradient Methods来进行详细讲解,如果有兴趣的读者,进认真和我们一起阅读下去,记得拿好纸和笔。
计算机视觉研究院
2018/07/25
4090
在局部误差边界条件下的随机子梯度方法的加速
PS超简单的扣人像方法
PS中(不要问我为什么不是photoshop),人像抠图的使用频率其实是很高的,例如人物换背景,换场景,简单的就是证件照抠图。
罗罗攀
2020/08/17
9040
Qt中纯C++项目发布为dll的方法(超详细步骤)
目录 一般创建方法 导出普通函数的方法&调用方法 导出类及其成员函数的方法&调用方法 众所周知,我们可以将C++项目中的类以及函数导出,形成 .dll 文件,以供其他程序使用,下面将说明Qt环境下的使
用户1198337
2018/01/19
1.8K0
Qt中纯C++项目发布为dll的方法(超详细步骤)
偏斜类的误差度量
“Machine Learning System Design:——Error metrics for skewed classes”
讲编程的高老师
2021/05/13
5510
偏斜类的误差度量
matplotlib 误差棒图
matplotlib中使用errorbar()绘制误差棒图来表示被测量的误差范围。
用户6021899
2019/08/14
1.9K0
Qt中纯C++项目发布为dll的方法(超详细步骤)
众所周知,我们可以将C++项目中的类以及函数导出,形成 .dll 文件,以供其他程序使用,下面将说明Qt环境下的使用方法。
xiaoxi666
2018/10/29
1.4K0
问:为什么Keras训练模型得到的训练误差比测试误差高很多?
此外,训练误差是每批训练数据的平均误差。由于你的模型是随着时间而变化的,一个 epoch 中的第一批数据的误差通常比最后一批的要高。另一方面,测试误差是模型在一个 epoch 训练完后计算的,因而误差较小。
种花家的奋斗兔
2020/11/13
7040
Java构造方法(超详细!)
构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。 换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。 注意:实例变量没有手动赋值的时候,系统会赋默认值。
全栈程序员站长
2022/09/08
6040

相似问题

火星MIPS超距误差

15

SqlDataReader上的超距离误差

22

XGBRegressor超参数整定时的误差

13

matlab中的指数超矩阵维数误差

12

DeepAR超参数整定误差

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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