排序后 QTableWidget 的填充不完整

2024-01-01

我有一个 QTableWidget ,它将填充一些随机值。 该表已启用排序:tableWidget.setSortingEnabled(True)。 排序工作正常(我知道,在这个最小的例子中,它将是按字母数字排序的数字)。

但是,当我按一列对表格进行排序时,然后使用此处的各种建议清除表格,或者tableWidget.clear(), tableWidget.clearContent() or tableWidget.setRowCount(0)并重新填充表,该表将填充不完整。我已经注意到,在对列进行排序之前,该表将不完全填充。因此,对最后一列进行排序将导致表完全重新填充。但这不是一个可接受的解决方法。

但我在这里缺少什么?如何始终完全重新填充表?

Code:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QAction, QTableWidget, QTableWidgetItem, QVBoxLayout, QPushButton
from PyQt5.QtCore import pyqtSlot
import random

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 table'
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(0,0,700,500)
        self.layout = QVBoxLayout()

        self.tableWidget = QTableWidget()
        self.tableWidget.setSortingEnabled(True)
        self.layout.addWidget(self.tableWidget)

        self.pb_refill = QPushButton("Refill")
        self.pb_refill.clicked.connect(self.on_click_pb_refill)
        self.layout.addWidget(self.pb_refill)

        self.setLayout(self.layout) 
        self.show()

    @pyqtSlot()
    def on_click_pb_refill(self):
        # self.tableWidget.clear()
        # self.tableWidget.clearContents()
        self.tableWidget.setRowCount(0)
        rows_random = int(random.random()*7)+5
        self.tableWidget.setRowCount(rows_random)
        self.tableWidget.setColumnCount(6)
        for row in range(rows_random):
            for col in range(6):
                number = random.random()
                self.tableWidget.setItem(row, col, QTableWidgetItem(str(number)))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

Result:(分类并补充后)


问题是,当您添加要重新排序的项目时,例如,假设您已正确插入第一行的值,但随后您在 (1, 0) 中输入了一个小于项目 (0, 0 )将被重新排序(项目 (0, j) 将是 (1, j)),当您插入时,设置的项目 (1, 1) 将替换占据位置 (0, 1) 的项目,因此项目 (0 , 2) 将保持为空。

解决方案是通过填充表来禁用排序。

@pyqtSlot()
def on_click_pb_refill(self):
    self.tableWidget.clear()
    self.tableWidget.setSortingEnabled(False)
    rows_random = int(random.random() * 7) + 5
    self.tableWidget.setRowCount(rows_random)
    self.tableWidget.setColumnCount(6)
    for row in range(rows_random):
        for col in range(6):
            number = random.random()
            self.tableWidget.setItem(row, col, QTableWidgetItem(str(number)))
    self.tableWidget.setSortingEnabled(True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

排序后 QTableWidget 的填充不完整 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • Android 禁用屏幕保护程序

    我想在应用程序运行时禁用屏幕保护程序 怎样才能做到呢 禁用 启用屏幕保护程序的最佳位置在哪里 在第一个活动中 在application java中 唤醒锁权限必须在清单中指定
  • java局部变量不可用

    我从 Eclipse 调试器中收到以下错误 局部变量不可用 尝试尽可能地修剪代码 问题非常简单 我必须使用 Divise 类中的 DivisiveUI UpdateLog 方法 并使用 Cluster 类中的变量 该部门有一个包含所有集群的
  • miniconda 无法安装 anaconda(安装 anaconda 自定义但没有软件包)

    我正在使用以下脚本以静默模式在计算机上安装 重新安装 最新的 anaconda 长时间运行正常 成功安装anaconda 然而 它最近坏了 现在不是安装所有 anaconda 软件包 而是最终安装 anaconda custom py36h
  • 我们如何复制包含 RSA 密钥的 EVP_PKEY?

    我找到了这个功能EVP PKEY copy parameters 可以复制EVP PKEY 但一些关于此函数的文档说它只能用于 DSA ECC 算法 官方文档 来自openssl org http www openssl org 没有提及该
  • 15 谜题启发式

    The 15 Puzzle是涉及启发式的建模算法的经典问题 此问题常用的启发式方法包括计算错位图块的数量以及计算每个块与其在目标配置中的位置之间的曼哈顿距离之和 请注意 两者都是可接受的 即它们永远不会高估剩余的移动次数 这确保了某些搜索算
  • if 条件从 ruby​​ 数组获取值

    我正在使用以下代码映射一个数组 url http www cnn com page Mechanize new get url images url page images map img img url to s if img width
  • Java 读取文件行并仅提取有用的信息

    我有文件 file1 file2 包含以下内容 2017 02 01 10 00 00 start running error yes doing no finish remind alarmno 123456789 logno 12345
  • 使用最大行长度简洁地序列化 JSON

    因此 我正在生成一个可能很长的 JSON 字符串 以便在 Sendgrid 的 SMTP API 中使用 因为它作为 SMTP 标头 所以它应该具有最大行长度 建议 72 但绝对不超过 1000 文档末尾描述了一种简单的解决方案 http
  • 端点 SWS 没有适配器

    我正在尝试使用创建一个简单的 Hello World WebServicethis http static springsource org spring ws sites 2 0 reference html tutorial html教
  • 在 Android 中格式化 EditText 的电话号码

    我正在制作一个简单的地址簿应用程序 针对 4 2 它需要姓名 地址 城市 州 邮政编码和电话 我想将输入的电话号码格式化为电话号码 XXX XXX XXXX 但我需要将值作为字符串取出 以便在保存时可以将其存储在数据库中 我怎样才能做到这一
  • 从 Internet Explorer 检索所有 cookie

    我正在尝试检索与我打开的特定页面 我已经通过身份验证 关联的所有 cookie 有多个与该网页关联的 cookie 我需要检索每个 cookie 以便稍后进行 POST 我尝试了几种方法 但没有一个给我完整的列表 到目前为止 我已经用 VB
  • 如何在 VS Code 中调试 scala sbt 项目

    我正在尝试在 vs code 中调试 sbt 项目 我已经下载了 VS Code 扩展名 scala Metals 如何在 scala Metal 中显式添加 build sbt 文件夹路径 如何在 scala Metal 中显式添加 bu
  • D3 非连续日期域在 X 轴上产生间隙

    我想绘制一些不连续的时间序列数据 周末 假期等日期的间隙 这是每日数据 数据看起来像这样 date value 1 2 15 109 33 1 5 15 106 25 1 6 15 106 26 1 7 15 107 75 1 8 15 1
  • 忽略Excel求和公式中的隐藏列

    我基本上想忽略Excel中的随机列 有没有办法检测某列是否隐藏 然后不在公式中包含该列 例子是 F1 B1 C1 E1 忽略D列 但第二天 F 栏可能需要 B D E 来代替 有没有办法简单地实现这一目标 我见过一些忽略特定列的公式 但没有
  • 如何检查 Magento 产品是否已添加到购物车?

    我想在 Magento 中首次将产品添加到购物车时显示弹出窗口 并且不想在再次添加或更新产品时显示弹出窗口 简而言之 我想知道将要添加到购物车中的产品是第一次出现还是不是第一次出现 答案很大程度上取决于您想要如何处理父 子类型产品 如果需要
  • 同一应用程序中可以加载不同版本的 DLL 吗?

    我的应用程序使用一个版本的库 a dll 我使用另一个 DLL b dll 它又使用我使用的同一库 a dll 的旧版本 我正在通过嵌入清单文件来构建应用程序 我使用的 DLL 也使用嵌入式清单文件 我的 WinSXS 文件夹中有两个版本的
  • 无法访问 Heroku 上的作曲家供应商文件夹

    我在 Heroku 上托管一个 PHP 应用程序 它使用 Composer 安装 Bootstrap 当我将应用程序部署到 Heroku 时 所有 Composer 依赖项都按预期安装在 vendor 子目录中 我现在尝试将 Bootstr
  • 是否有任何有效的用例可以在现代 C++ 中使用 new 和 delete、原始指针或 c 样式数组?

    这里有一个值得注意的video 停止教学C https www youtube com watch v YnWhqhNdYyk关于 C 语言教学中范式的改变 还有一篇值得注意的博客文章 我有一个梦想 http dev jungle blog
  • 如何打开 Outlook 新邮件窗口 C#

    我正在寻找一种方法在 Outlook 窗口中打开新邮件 我需要以编程方式填充 从 到 主题 正文信息 但保持此新邮件窗口打开 以便用户可以验证内容 添加内容 然后作为正常的 Outlook 消息发送 发现 Process Start Str
  • 排序后 QTableWidget 的填充不完整

    我有一个 QTableWidget 它将填充一些随机值 该表已启用排序 tableWidget setSortingEnabled True 排序工作正常 我知道 在这个最小的例子中 它将是按字母数字排序的数字 但是 当我按一列对表格进行排