Python 3.5.1:QVariant 表示映射类型,无法实例化

2024-01-15

我正在使用 Python 3.5.1,我正在尝试运行此代码,但 QVariant 有问题

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Model(QAbstractTableModel):
    def __init__(self, parent=None, *args):
        QAbstractTableModel.__init__(self, parent, *args)
        self.items = ['Item_A_001','Item_A_002','Item_B_001','Item_B_002']

    def rowCount(self, parent=QModelIndex()):
        return len(self.items)       
    def columnCount(self, parent=QModelIndex()):
        return 1

    def data(self, index, role):
        if not index.isValid(): return QVariant()
        elif role != Qt.DisplayRole:
            return QVariant()

        row=index.row()
        if row<len(self.items):
            return QVariant(self.items[row])
        else:
            return QVariant()

class Proxy(QSortFilterProxyModel):
    def __init__(self):
        super(Proxy, self).__init__()
        self.filterActive = False

    def setView(self, view):
        self._view = view

    def filterAcceptsRow(self, row, parent):
        if self.filterActive and '_B_' in self.sourceModel().data(self.sourceModel().index(row, 0), Qt.DisplayRole).toPyObject():
        self._view.selectRow(row)
        return True

class MyWindow(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)

        tableModel=Model(self)               

        proxyModel=Proxy()
        proxyModel.setSourceModel(tableModel)

        self.tableview=QTableView(self) 
        self.tableview.setModel(proxyModel)
        self.tableview.horizontalHeader().setStretchLastSection(True)
        self.tableview.setSelectionMode(QAbstractItemView.MultiSelection)

        proxyModel.setView(self.tableview)

        button=QPushButton(self)
        button.setText('Select Items with B')
        button.clicked.connect(self.clicked)

        layout = QVBoxLayout(self)
        layout.addWidget(self.tableview)
        layout.addWidget(button)
        self.setLayout(layout)

    def clicked(self, arg):
        proxyModel=self.tableview.model()
        self.tableview.clearSelection()
        proxyModel.filterActive = True
        proxyModel.invalidateFilter()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

事实上,当我执行此代码时,会出现错误消息: QVariant Represents amapped kind and can't be instantantiated 。 我尝试删除 QVariant 并将 None 放置到位

def data(self, index, role):
    if not index.isValid(): return None
    elif role != Qt.DisplayRole:
        return None

    row=index.row()
    if row<len(self.items):
        return (self.items[row])
    else:
        return None

但出现新的错误消息:“str”对象没有属性“toPyObject”。

感谢你们对我的帮助


正如您所发现的,默认情况下,QVariant当与 Python3 一起使用时,PyQt4 中不存在。相反,所有内容都会自动转换为等效的 python 类型。所以你需要做的就是使用None无论在哪里QVariant.null通常是预期的,并避免尝试使用任何QVariant方法(例如toPyObject,这显然是多余的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 3.5.1:QVariant 表示映射类型,无法实例化 的相关文章

随机推荐

  • 如何使用点符号(如方括号符号)中的变量

    我一直在 Javascript 中使用方括号表示法来创建和调用关联数组 在这个例子中 我理解方括号表示法允许您使用变量来调用数组中的某个对象 你会如何用点表示法来做这样的事情 var item item 1 pen var x 1 cons
  • 如何选择BigQuery表中最新的分区?

    我尝试从日期分区 BigQuery 表中的最新分区中选择数据 但查询仍然从整个表中读取数据 我已经尝试过 据我所知 BigQuery不支持QUALIFY SELECT col FROM table WHERE PARTITIONTIME S
  • 如何限制ListView中列表项的显示

    我从 url 获取 XML 数据并使用自定义列表适配器在ListView 我只需要显示 10 个项目ListView 我怎样才能做到这一点 请告诉我 Thanks 适配器中仅放入 10 件物品 或者覆盖getCount 并返回10
  • Camera.PictureCallback 拍照后停止预览

    使用具有 Android API 16 的设备拍照后 预览停止工作 但当我使用具有 Android API 22 的设备时 应用程序工作正常 我有这个拍照代码 private Camera PictureCallback mPicture
  • 连接sqlite中未知数量的值

    我正在使用 sqlite 3 15 1 我有一张桌子master包含大学的主时间表 看起来像 day sem sec hour sub id MON 5 B 4 10IS51 MON 5 B 4 10IS53 MON 5 B 5 10CS5
  • 更改 Three.js 对象的几何形状

    我正在尝试更改 Three js 场景中某些对象的几何形状 我有一段几乎可以工作的代码 其中鼠标单击触发了更改 但遇到了以下问题 渲染的 形状仅在第一次鼠标单击时更改 即使几何图形也发生了变化通过以下每次点击都成功修改 使用 Three j
  • 如何让 nasm 在 MacOS 终端中作为命令工作?

    我一直在尝试让 nasm 作为终端中的命令工作 但似乎没有任何效果 我只是不断收到错误 nasm error unable to find utility nasm not a developer tool or in PATH 因此 首先
  • 在javaScript中刷新页面后如何更新数据库?

    我想给用户机会更改产品的评分值 但刷新页面后不起作用 例如 当他访问一个他没有评分的新产品时 他可以在刷新页面之前一次又一次地更改评分值 但刷新页面后 他可以更改同一产品的评级值 但 ratingValue2 的警报不起作用 数据库也没有更
  • 两个 pdf 水印 - 第一个的每一页和第二个的每一页

    我有两个长度相同的 pdf 文件 比如说 pdf1 pdf 和 pdf2 pdf 我正在尝试使用 pdf2 pdf 为 pdf1 pdf 的每一页添加水印 即 pdf1 pdf 第 1 页与 pdf2 pdf 第 1 页 pdf1 pdf
  • 如何从 imblearn 中的 RandomUnderSampler 获取样本索引

    有谁知道使用 imblearn 的 RandomUnderSampler 进行欠采样后是否 如何获得所选样本的索引 曾经有一个参数 return indices True 现在在新版本中被删除 并且可能被属性 sample indices
  • 如何在未安装 Git 的情况下应用“git diff”补丁?

    我的客户如何应用由git diff没有安装git 我尝试过使用patch命令 但它总是询问要修补的文件名 git diff gt patchfile and patch p1 lt patchfile 工作 但正如许多人在评论和其他答案中注
  • 检测移动 Web 应用程序是否位于本机 Facebook 应用程序中

    有没有办法检测我们的移动 Web 应用程序是否显示在本机 Facebook iOS 应用程序的 WebView 内 或者是否独立运行 据我们了解 我们不允许从他们的框架内获取 Facebook 积分 但我们are允许从我们自己的独立 Web
  • VBA宏使用单元格路径保存Excel文件

    我正在尝试使用硬线和单元格值的组合来保存文件以确定文件路径 In cell A29 我有一个输出这个的公式 2014 1月 高额现金 1 7 14 我得到一个预期 声明结束 error 代码是 ActiveWorkbook SaveAs F
  • 正则表达式替换%variables%

    我已经用了 30 分钟的时间来拔一撮头发了 我有一本字典 像这样 search replace foo bar 还有一个像这样的字符串 Foo bar foo search 我想用字典中的等效文本替换每个变量 Foo bar bar rep
  • Gradle:如何在控制台上打印依赖项工件 URL

    我们从maven转移到gradle 在maven中 使用build命令 我们可以清楚地看到从中获取依赖项的nexus URL 使用 gradle 我如何在项目构建时查看依赖项 URL 是否有任何命令行选项可以在 gradle 中执行此操作
  • 如何在 Laravel 队列中使用模型

    我正在尝试将邮件列表从 CSV 导入到我的数据库中 我的 Laravel 中有两个模型负责执行此操作 Target and Mailing one Target有很多Mailings 我正在使用带有 Beanstalkd 的队列系统 我在用
  • Redmine 3.3.0 (ruby on Rails 4.2.6) 样式表未生成/包含在 application.css 中

    我已经安装了 redmine 并设法启动它 但 UI 似乎缺少它的 css 样式 如果我点击 application SomeId css 的链接 它会显示一个包含以下消息的空 css This is a manifest file tha
  • UIGestureRecognizer 接收触摸但也将其转发给 UIControl

    你会如何允许UIGestureRecognizer of a UIView接收触摸事件 但也确保另一个 底层 上层UIView也收到同样的触摸事件 Lets say I have got the following view hierach
  • 三角形带上的纹理坐标

    我创建了一个带有 14 个顶点的几何着色器的立方体 感谢三角形条 现在的问题是如何放置我的纹理坐标 我有一个包含 3 个纹理的图像文件 立方体的顶面 底面 左 右 前 后面 我找不到为每个顶点提供纹理坐标的方法 14 我总是得到奇怪的纹理显
  • Python 3.5.1:QVariant 表示映射类型,无法实例化

    我正在使用 Python 3 5 1 我正在尝试运行此代码 但 QVariant 有问题 from PyQt4 QtCore import from PyQt4 QtGui import import sys class Model QAb