python编写程序显示表格_python – 使用QTableWidget显示一个巨大的工作表

我需要使用PyQt类QTableWidget显示数据.但可能会有数十万行.显示整个工作表使应用程序挂起…

所以我找到了一个解决方案,包括加载数据(意味着创建工作表)但隐藏了大部分行,并且在移动滚动条时,显示新行并隐藏以前的行.

在下面的代码中,我设置了self.rowsShown = 50,并且在init处显示了从1到50的行.我以前做过self.verticalScrollBar().actionTriggered.connect(self.refreshDisplay).

所以代码是:

def refreshDisplay(self):

"""

This is to refresh the display when the scrollbar is moved

"""

# Minimum is reached and a previous row exists

if self.verticalScrollBar().value() <= self.verticalScrollBar().minimum() and self.isRowHidden(self.firstRowShown-1):# Minimum is reached and a previous row exists

for row in xrange(self.lastRowShown-1, self.lastRowShown):

self.hideRow(row)

self.lastRowShown -= 1

for row in xrange(self.firstRowShown-1, self.firstRowShown):

self.showRow(row)

self.firstRowShown -= 1

# Maximum is reached and a next row exists

if self.verticalScrollBar().value() >= self.verticalScrollBar().maximum() and self.isRowHidden(self.lastRowShown+1):

for row in xrange(self.firstRowShown, self.firstRowShown+1):

self.hideRow(row)

self.firstRowShown += 1

for row in xrange(self.lastRowShown, self.lastRowShown+1):

self.showRow(row)

self.lastRowShown += 1

当我使用鼠标滚动或单击滚动条的按钮时,这非常有效.但是当我抓住滑块或使用键盘移动所选的外壳时,我在所示区域被阻挡.

此外,滚动区域的大小对应于仅显示的行.我想重新设置它来设置我自己的栏(例如,基于实际行数的大小),以便我可以快速移动到工作表的另一部分.但滚动条的大小始终使用显示的行数进行更新.

所以,我对你的期望是帮助我解决这两个问题,或者给我另一个想法来展示如此庞大的表格.也许我错过了一个模块或类,它已经具有在移动光标时加载/显示行的功能.

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值