QTableWidgetItem 返回项目类型(pyqt)

2023-12-07

我正在使用 Qt 和 python(以及 pyqt)编写一个 QGIS 插件。

在 QtDesigner 中,我有一个 QTableWidget 对象,如果有办法获取列项类型,我真的很挣扎。

例如,在下表中:

enter image description here

我输入一些用户可以编辑的默认参数。此外,用户可以添加具有其他值的其他行。

我想知道我是否可以获得force列数据类型输入(例如 float、int、string),并将此信息作为列表(或任何其他 python 对象)获取,以便我可以在 python 代码中使用。

我在 Qt API 中没有找到有用的东西。

你知道是否有办法做到这一点?

EDIT

感谢 @rbaleksandar 的回答,我又迈出了一步。

这段代码如下:

l = []
for i in range(self.tableWidget.columnCount()):
    itm = self.tableWidget.item(0,i)
    l.append(itm.type())

但是,即使表的第一行填充了一些数字,生成的列表也会带有 QVariant翻译的值由零组成:

l = [0, 0, 0, 0, 0, 0, 0, 0, 0]

我发现 QVariant 类型与数字相关联(2 代表 Int,6 代表 Double,10 代表字符串),所以我期望l充满了这些数字,所以:

l = [2, 6, 6, 6, 6, 6, 6, 6, 6]

我错过了什么吗?

再次感谢


A QTableWidget将自动为该内容提供正确的编辑器最常见的数据类型。但为了使其正常工作,您必须使用以下命令将值添加到表小部件项目中:setData使用EditRole.

这是一个简单的演示:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.table = QtGui.QTableWidget(3, 6, self)
        self.button = QtGui.QPushButton('Get Value', self)
        self.edit = QtGui.QLineEdit(self)
        self.edit.setReadOnly(True)
        self.button.clicked.connect(self.handleButton)
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.table, 0, 0, 1, 2)
        layout.addWidget(self.button, 1, 0, 1, 1)
        layout.addWidget(self.edit, 1, 1, 1, 1)
        # populate the table
        data = ['text', 1, 0.25, True,
                QtCore.QDate.currentDate(),
                QtCore.QTime.currentTime()]
        for row in range(3):
            for column, value in enumerate(data):
                item = QtGui.QTableWidgetItem()
                item.setData(QtCore.Qt.EditRole, value)
                self.table.setItem(row, column, item)

    def handleButton(self):
        try:
            item = self.table.selectedItems()[0]
            self.edit.setText('Value: %s, Type: %s' %
                (item.text(), type(item.data(QtCore.Qt.EditRole))))
        except IndexError:
            self.edit.clear()

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 700, 200)
    window.show()
    sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTableWidgetItem 返回项目类型(pyqt) 的相关文章

随机推荐

  • Typeahead.js - 无法选择建议

    我一定是个白痴 我正在使用Typeahead js插入 我正在尝试使用自定义模板来获取建议 当我的自定义模板出现时 我无法使用箭头键实际选择项目 如果我将鼠标悬停在某个项目上 该选择也不会突出显示 我认为这可能只是一个样式问题 但是 如果出
  • iOS 中的富文本编辑器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个示例项目 它应该具有基本的富文本编辑功能 粗体 斜体 下划线 对齐 附加图像 我浏览了谷歌搜索结果 有几个编辑器可供使用iOS但这些都是通过使用开发的UIWebView
  • .NET 2.0 Web 应用程序身份验证失败:“提供的票证无效”

    我有一个 NET 4 0 应用程序和一个 2 0 应用程序作为子应用程序 Web 应用程序不在多服务器环境中 只有一台服务器参与服务这些请求 两个应用程序都使用自定义身份验证 并且两个应用程序具有相同的machineKey属性和值 当我访问
  • 如何使用 Node.js 创建不存在的目录

    如果目录不存在 以下创建目录的正确方法是吗 它应该具有脚本的完全权限并且可供其他人读取 var dir dirname upload if path existsSync dir fs mkdirSync dir 0744 对于个人目录 v
  • MySQL - 在 WHERE 子句中使用 COUNT(*)

    我正在尝试在 MySQL 中完成以下任务 请参阅pseudo code SELECT DISTINCT gid FROM gd WHERE COUNT gt 10 ORDER BY lastupdated DESC 有没有办法在 WHERE
  • 设置独立于模型名称的种类名称(App Engine 数据存储区)

    作为一名 Python 程序员 我喜欢我的代码是可重用的 我试图避免代码中的种类名称冲突 其中两个不同的模型共享相同的种类名称 目前 我只是在模型的类名前面添加一些有意义的文本 但这非常不符合Python风格 能够显式设置模型的种类将解决我
  • 如何自动升级 Firebreath 插件

    最近 我使用 Firebreath 编写了一个跨浏览器插件 并为所有浏览器制作了一个安装程序 我在 stackoverflow 中搜索了自动插件安装 并找到了很多很好的答案 FireBreath插件自动安装 在网页上部署 Firebreat
  • 如何识别 html5 媒体元素已停止并等待进一步的媒体继续播放

    我正在与MediaSource and SourceBuffer播放 html5 视频 我按顺序获取 DASH 片段以继续不间断的视频播放 但有时 由于网络状况 SourceBuffer数据耗尽无法继续游戏 当该数据到达时 比赛将继续 但在
  • 使用 xslt 删除 xml 中的重复项

    我需要删除以下 xml 中的重复项
  • 在 C# 中序列化嵌套类?

    我想做的是序列化嵌套类 首先我的代码 Serializable public class SampleClass Serializable public class Person XmlElement Name public string
  • eval():无法分配给函数调用

    我的饼干答题器还有一个问题 这是我编写的产生错误的代码 cps cps bcps buych c c bprice buych eval buych eval buych 1 cps 是一个变量 c 是一个变量 b1 b2 b3 b4 b5
  • 如何从fragment中获取Toolbar?

    I have ActionBarActivity with NavigationDrawer并使用 support v7Toolbar作为动作栏 在我的片段之一中 工具栏有自定义视图 在其他片段中Toolbar应该显示标题 How get
  • ssh-add 创建连接到代理时出错:连接超时 (Windows 10)

    我正在尝试将 ssh 添加到 git 我已经生成了 ssh中有2个文件 在终端 MINGW64 中我输入 eval ssh agent s 它回应 Agent pid 3480 然后我输入 ssh add ssh id rsa 它响应 大约
  • 必须使用活动访问令牌在不同的 url 上查询有关当前用户的信息

    我正在开发托管在测试机上的 Facebook 应用程序 一切都很好 今天我想将其投入生产 我已经更改了 Facebook 开发人员的页面网址 从那一刻起 当我尝试使用此应用程序时 出现错误 An active access token mu
  • 将 NSTextField 的文本重置为空字符串 -- setText: 不起作用

    我有一个NSTextField 我需要一个按钮来重置字段的文本 我该怎么做呢 我一直在尝试这个 textBox setText textbox text 这不起作用 但我研究过 没有发现任何关于如何设置文本的信息 只找到如何获取文本 如果是
  • 如何保存YUV_420_888图像?

    我使用camera2 API 构建了自己的相机应用程序 我从样本开始 相机2Raw 并且我添加了 YUV 420 888 支持而不是 JPEG 但现在我想知道如何将图像保存在 ImageSaver 中 这是我的 run 方法的代码 Over
  • Tkinter - 画布滚动/滚动区域解释 - (非)限制区域

    它被带到我的注意力你不能用例如限制视图scrollregion 0 0 0 0 问题是为什么会这样 由于官方文档表明这应该有效并且不会抛出badRegion error 滚动区域 指定一个具有四个坐标的列表 描述左 上 矩形区域的右坐标和底
  • 从 JSON 字符串获取值

    我有以下 JSON 字符串 d Foo 7 Bar 5 Foobar 3 以及我的js文件中的相应调用 getJSON Foo svc GetSomeFoo function response alert response Foo aler
  • Swift - 发布构建崩溃,除非我关闭优化

    这是 XCode 6 2 上的 如果我在发布模式下运行应用程序 它会崩溃 但关闭优化后它不会崩溃 代码看起来很简单 我已经编程 ObjC 十多年了 所以对编程等并不陌生 我注意到 在 32 位中 它在发布模式 最快 O 下运行良好 但在 6
  • QTableWidgetItem 返回项目类型(pyqt)

    我正在使用 Qt 和 python 以及 pyqt 编写一个 QGIS 插件 在 QtDesigner 中 我有一个 QTableWidget 对象 如果有办法获取列项类型 我真的很挣扎 例如 在下表中 我输入一些用户可以编辑的默认参数 此