首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt4 4.11.4不再接受QBrush(无)或QColor(无)

PyQt4 4.11.4不再接受QBrush(无)或QColor(无)
EN

Stack Overflow用户
提问于 2015-10-07 04:09:38
回答 1查看 754关注 0票数 1

使用PyQt4,我一直能够以None作为参数初始化QBrush和QColor (创建无颜色等):

代码语言:javascript
复制
QBrush(None)
QColor(None)

但是,在我从4.11.3升级到4.11.4 (这是一个小的升级)之后,我发现这些不再被接受:

代码语言:javascript
复制
>>> QColor(None)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: arguments did not match any overloaded call:
  QColor(Qt.GlobalColor): argument 1 has unexpected type 'NoneType'
  QColor(int): too many arguments
  QColor(QVariant): argument 1 has unexpected type 'NoneType'
  QColor(): argument 1 has unexpected type 'NoneType'
  QColor(int, int, int, int alpha=255): argument 1 has unexpected type 'NoneType'

我试图搜索4.11.3至4.11.4之间的变化,但找不到任何解释这一点的相关信息。我开始怀疑我是否在寻找正确的东西。

这是由Qt的变化引起的吗?还是PyQt4?或者python-SIP?

而且,我也不明白Qt中的底层(C++)调用是什么。它实际上是调用QBrush()和QColor(),还是试图将Python更改为c?

谢谢,我希望我在网上没有错过一些明显的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 16:08:10

PyQt-4.11.4 ChangeLog有以下条目:

2015-02-06菲尔汤普森

  • all :修正了所有采用QVariant参数的伪函数。5c941d8fb16b <4.11-maint>

以下是sip/QtGui/qchro.SIP差异的相关部分

代码语言:javascript
复制
--- PyQt-x11-gpl-4.11.3/sip/QtGui/qcolor.sip    2014-11-09
+++ PyQt-x11-gpl-4.11.4/sip/QtGui/qcolor.sip    2015-06-11
@@ -75,13 +70,17 @@

     QColor(Qt::GlobalColor color /Constrained/);
     QColor(QRgb rgb);
-    QColor(const QVariant &variant) /NoDerived/;
+    QColor(const QVariant &variant /GetWrapper/) /NoDerived/;
 %MethodCode
         #if QT_VERSION >= 0x050000
-        sipCpp = new QColor(a0->value<QColor>());
+        if (a0->canConvert<QColor>())
+            sipCpp = new QColor(a0->value<QColor>());
         #else
-        sipCpp = new QColor(qVariantValue<QColor>(*a0));
+        if (qVariantCanConvert<QColor>(*a0))
+            sipCpp = new QColor(qVariantValue<QColor>(*a0));
         #endif
+        else
+            sipError = sipBadCallableArg(0, a0Wrapper);
 %End

     QString name() const;

因此,复制构造函数现在似乎检查QVariant是否可以将参数转换为QColor/QBrush,如果不能,则会引发错误。

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

https://stackoverflow.com/questions/32983668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档