PyQt 对齐复选框并将其放在每一行中

2024-01-04

我正在尝试做this http://falsinsoft.blogspot.ro/2013/11/qtablewidget-center-checkbox-inside-cell.html与复选框。 遗憾的是,它是为 C++ 编写的,并且对 Python 代码的任何改编都会导致以下错误:'QWidget' object is not callable我想做的是在每一行添加一个复选框,这是我的代码:

    pWidget = QWidget()
    pCheckbox = QCheckBox()
    pLayout = QVBoxLayout()
    pLayout.addWidget(pCheckbox)
    pLayout.setAlignment(Qt.AlignCenter)
    pLayout.setContentsMargins(0, 0 ,0, 0)
    pWidget.setLayout(pLayout)

    for char in accounts:
        for columnNumber in range(numberColumns):
            chkBoxItem = QTableWidgetItem()
            chkBoxItem.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
            chkBoxItem.setCheckState(Qt.Unchecked)
            self.mainAccountTable.insertRow(currentRowCount)
            self.mainAccountTable.setItem(currentRowCount, 0, pWidget(chkBoxItem))
            self.mainAccountTable.setItem(currentRowCount, 1, QTableWidgetItem(data[1]))

如果我把pLayout = Layout()是说它没有用Python实现。 那么,如何添加居中对齐的复选框而不在每行附近添加文本区域?预先感谢您的任何提示。

稍后编辑: 将代码移动到循环内是有效的,但我无法控制检查:

for char in accounts:
        for columnNumber in range(numberColumns):
            pWidget = QWidget()
            pCheckbox = QCheckBox()
            pLayout = QVBoxLayout(pWidget)
            pLayout.addWidget(pCheckbox)
            pLayout.setAlignment(Qt.AlignCenter)
            pLayout.setContentsMargins(0, 0 ,0, 0)
            pWidget.setLayout(pLayout)
            #chkBoxItem = QTableWidgetItem()
            #chkBoxItem.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
            #chkBoxItem.setCheckState(Qt.Unchecked)
            self.mainAccountTable.insertRow(currentRowCount)
            self.mainAccountTable.setCellWidget(currentRowCount, 0, pWidget)

这是一个截屏 https://i.stack.imgur.com/Valii.jpg我如何知道我检查了什么并构建设置列表?


Here is ekhumoro 的一个例子 https://stackoverflow.com/a/12373320/984421查找单击时检查的内容:

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self, rows, columns):
        QtGui.QWidget.__init__(self)
        self.table = QtGui.QTableWidget(rows, columns, self)
        for column in range(columns):
            for row in range(rows):
                item = QtGui.QTableWidgetItem('Text%d' % row)
                if row % 2:
                    item.setFlags(QtCore.Qt.ItemIsUserCheckable |
                                  QtCore.Qt.ItemIsEnabled)
                    item.setCheckState(QtCore.Qt.Unchecked)
                self.table.setItem(row, column, item)
        self.table.itemClicked.connect(self.handleItemClicked)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.table)
        self._list = []

    def handleItemClicked(self, item):
        if item.checkState() == QtCore.Qt.Checked:
            print('"%s" Checked' % item.text())
            self._list.append(item.row())
            print(self._list)
        else:
            print('"%s" Clicked' % item.text())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window(6, 3)
    window.resize(350, 300)
    window.show()
    sys.exit(app.exec_())

但您也可以迭代行并使用.findChild(type(QtGui.QCheckBox())).isChecked()在正确的列上

例如 :

from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt

class Window(QtGui.QWidget):
    def __init__(self, rows, columns):
        QtGui.QWidget.__init__(self)
        self.table = QtGui.QTableWidget(rows, columns, self)
        for row in range(rows):
            qwidget = QtGui.QWidget()
            checkbox = QtGui.QCheckBox()
            checkbox.setCheckState(QtCore.Qt.Unchecked)
            qhboxlayout = QtGui.QHBoxLayout(qwidget)
            qhboxlayout.addWidget(checkbox)
            qhboxlayout.setAlignment(Qt.AlignCenter)
            qhboxlayout.setContentsMargins(0, 0, 0, 0)
            self.table.setCellWidget(row, 0, qwidget)
            self.table.setItem(row, 1, QtGui.QTableWidgetItem(str(row)))
        layout = QtGui.QVBoxLayout(self)
        self.button = QtGui.QPushButton()
        self.button.setObjectName("loadButton")
        layout.addWidget(self.table)
        layout.addWidget(self.button)
        self.button.clicked.connect(self.ButtonClicked)

    def ButtonClicked(self):
        checked_list = []
        for i in range(self.table.rowCount()):
            if self.table.cellWidget(i, 0).findChild(type(QtGui.QCheckBox())).isChecked():
                checked_list.append(self.table.item(i, 1).text())
        print checked_list


if __name__ == '__main__':

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

PyQt 对齐复选框并将其放在每一行中 的相关文章

随机推荐

  • 如果可能的话静态断言,否则动态断言?

    假设我有一个模板函数 它接受一个整数和一个对类型 T 的实例的 const 引用 现在 根据整数 只有某些 T 是可接受的 否则在运行时会引发异常 如果此函数的所有使用都使用常量整数 则可以将 int 设为模板参数并使用静态断言来检查它是否
  • 性能损失:非规范化数字与分支错误预测

    对于那些已经测量过或对此类注意事项有深入了解的人 假设您必须执行以下操作 仅选择任何示例 浮点运算符 float calc float y float z return sqrt y y z z 100 Where y and z可能是非正
  • 使用 Serilog 的模式(通过 ILogger 与使用静态 Serilog.Log)

    背景 在一个新项目中Serilog被选为记录器 我自动开始传递ILogger界面 代码访问Log Logger从那时起 需要日志记录的类就会接受ILogger通过构造函数注入 我在这种做法上受到了挑战 建议是在Log类 例如Serilog
  • 实践方案使用哪种环境、IDE还是解释器?

    我一直在努力通过小阴谋家我想知道最好使用什么环境 IDE 或解释器来测试我自己记下的任何方案代码 Racket http racket lang org 前博士计划 http racket lang org new name html 有一
  • fseek/ftell 是否会给出错误的文件大小?

    在 C 或 C 中 可以使用以下命令返回文件大小 const unsigned long long at beg unsigned long long ftell filePtr fseek filePtr 0 SEEK END const
  • DNX (rc1) Web 命令不起作用

    我在运行 MVC6 应用程序时遇到问题 项目构建良好 没有错误 包加载正确 没有由于恢复而出现错误 这是我的 global json 代码 如您所见 应用程序中和机器上的 dnx 版本是相同的 https i stack imgur com
  • 通过复制现有表的结构来创建表

    我正在尝试使用 Management Studio 复制 SQL Server 2008 中的现有表来创建新表 现有表不包含任何数据 我正在使用以下代码 但收到 AS 附近语法错误的错误 我不确定这里出了什么问题 我是一个 SQL 新手 任
  • MySQL创建连接两个整个表的视图

    如何创建一个视图来合并两个不同表中不同的所有列 CREATE VIEW listView AS SELECT FROM tab1 h LEFT JOIN tab2 b ON h tID b tID WHERE value 0 这给了我错误
  • 后期操作中的模型更改在 Html.TextBoxFor 中不可见?

    这一定是非常明显的事情 但对我来说 它看起来很奇怪 我有简单的控制器 具有一个属性的模型以及显示属性值并呈现该属性的编辑器的视图 当我单击该按钮时 会发布表单并将感叹号附加到属性上 这个感叹号在我看来是可见的 但仅在p标签 不在input标
  • 为什么C#内存流要保留这么多内存?

    我们的软件通过一个解压缩某些字节数据GZipStream 它从a读取数据MemoryStream 这些数据以 4KB 块的形式解压并写入另一个块中MemoryStream 我们已经意识到进程分配的内存比实际解压缩的数据要高得多 例子 具有
  • 如何设置 Visual Studio Code 来运行和调试 ColdFusion 代码?

    是否可以配置 Visual Studio Code 安装在我的 Windows 10 客户端计算机上 来运行和调试 ColdFusion 代码 该代码位于服务器端在路径中C inetpub wwwroot dir dev 我在用着冷聚变 2
  • Mongodb 查询构造函数采用原始查询字符串 Java

    我试图提出一个概念来获取查询字符串并通过查询对象将其传递到类似的内容中 returnList mongoTemplateTracking find query TrackingData class COLLECTION NAME 我一直在查
  • Pandas 检查多行中的重叠日期

    我需要在大型设备上运行一个函数groupby检查两个子组是否有重叠日期的查询 以下是单个组的示例tmp ID num start stop subGroup 0 21 10 2006 10 10 2008 10 03 1 1 21 46 2
  • UITableViewCell 中复选标记的问题

    我已经实现了下面的代码 UITableViewCell cell tableView1 cellForRowAtIndexPath indexPath UITableViewCell cell2 tableView1 cellForRowA
  • 使用 JFrame 和 JPanel 的简单 Java 动画

    好的 所以该程序的目的只是绘制椭圆形并将其移动到屏幕上 该代码在 Eclipse 上编译时没有错误 但运行时 没有在屏幕上绘制或移动椭圆形 我一直在研究 似乎线程必须为此做很多事情 但是我需要一个线程来完成这个简单的程序吗 显然 我对使用
  • 如何判断B类是否是A类的子类?

    看来如果你为 Mac OS 开发 NSObject有isSubclassOfClass方法 但是当我检查同一个类的 iOS 类引用时 它没有该方法 并且 Xcode 抱怨该方法 我目前的解决方案是放置一个方法 void iAmClassB在
  • DataView RowFilter 中的撇号

    我有一个 DataView 我试图根据动态字符串进行过滤 dv RowFilter ContentTitle titleFilter 在某些情况下 titleFilter包含撇号 它会关闭过滤器查询并导致错误 有什么办法可以摆脱这个角色吗
  • 对微服务的 XA 支持

    Scenario 我有多个符合 XA 的数据库 前端有不同的微服务 这些微服务对它们执行 CRUD 操作 我需要在这些微服务之间执行两阶段提交 这意味着我有一个正在运行的服务器 它对这些微服务进行 API 调用以进行一些更新 并且这些更新应
  • 如何停止 Microsoft 认知 TTS 音频播放?

    我正在使用 Microsoft 认知服务语音 SDK 的 JavaScript 版本https github com Azure Samples cognitive services speech sdk https github com
  • PyQt 对齐复选框并将其放在每一行中

    我正在尝试做this http falsinsoft blogspot ro 2013 11 qtablewidget center checkbox inside cell html与复选框 遗憾的是 它是为 C 编写的 并且对 Pyth