我正在学习Python并试图编写一个程序来帮助我的父亲。 我希望它像excel一样,现在看起来很棒,但我不知道如何让tableWidget中的行数(而不是列数)增长,而某些人可以慢慢下去... 我可以做它使用QtDesigner或我必须在.py文件中编写代码? 任何帮助表示赞赏... 很抱歉,如果我问愚蠢的问题,我的一个小白真的...Qt和PyQt tablewidget越来越多的行数
回答
这里是那种证明型的概念例子:
class Widget(QtGui.QWidget):
def __init__(self):
super(Widget, self).__init__()
self.resize(600,400)
layout = QtGui.QVBoxLayout(self)
self.table = QtGui.QTableWidget(20,10)
self.vBar = self.table.verticalScrollBar()
self._vBar_lastVal = self.vBar.value()
layout.addWidget(self.table)
self.vBar.valueChanged.connect(self.scrollbarChanged)
def scrollbarChanged(self, val):
bar = self.vBar
minVal, maxVal = bar.minimum(), bar.maximum()
avg = (minVal+maxVal)/2
rowCount = self.table.rowCount()
# scrolling down
if val > self._vBar_lastVal and val >= avg:
self.table.insertRow(rowCount)
# scrolling up
elif val < self._vBar_lastVal:
lastRow = rowCount-1
empty = True
for col in xrange(self.table.columnCount()):
item = self.table.item(lastRow, col)
if item and item.text():
empty=False
break
if empty:
self.table.removeRow(lastRow)
self._vBar_lastVal = val
你有依靠表格窗口小部件的垂直滚动条来表示有关它改变值的信息。所以我们将它的valueChanged(int)
信号连接到我们的方法。
scrollbarChanged
SLOT将收到滚动条的值。我在这里做的是检查当时滚动条的最小值和最大值,并查看当前位置是否至少在中间位置。我们还检查当前滚动条值是否大于上次滚动条值,因为我们只想在向下滚动条上添加行。如果这些条件是真的,那么我们插入一个新的行。
收缩它的行为有一点牵扯,因为我确信你需要检查最后一行以确保它是空的,如果是这样的话,只删除它。我的版本给你粗略的想法,但数学逻辑可能需要更多的工作。但是它正在做的是通过最后一行中的每个项目来查看它的None或空值。如果整行是空的,则将其删除。因此,当滚动备份时你确实会减少效果。
希望这给你一个出发点!如果您需要更详细的解释任何部分,请随时询问代码。
非常感谢,jdi !!!我研究了你的代码,做了一些修改并且工作!唯一的是,如果你想要一个更“实用”的减少效果,你必须提高“LastRow”的值为20或其他... – Antoni4040 2012-07-08 06:43:32
雅完全。就像我说的,我几乎没有用逻辑进行测试。我认为减速机会很粗糙。您可能也希望在滚动手柄的大小为100%之前停止缩短一些时间,这样可以始终保持超出可见视图的额外行数。这样,你的观点不会缩小到酒吧如此之大,你不能再滚动。 – jdi 2012-07-08 15:51:17
- 1. Java数组越来越多
- 2. iOS AutoLayout越来越多的行
- 3. 越来越多行与许多IDS
- 4. 越来越多的NSTableView行高度
- 5. 越来越多的机会
- 6. c + +输出越来越多的数字
- 7. 越来越多维数值数组
- 8. 越来越指数
- 9. 越来越多的日志数据
- 10. Azure越来越多的Sql数据库
- 11. ColdFusion越来越多的数字
- 12. getter和setter,越来越多领域
- 13. C#Event Handlers越来越多
- 14. JSF1064获得越来越多
- 15. BerkeleyDB越来越胖,越来越慢
- 16. 行是越来越在Oracle
- 17. 越来越BAD_EXC_INSTRUCTION和Optional.None swift
- 18. 我越来越指针和整数
- 19. 的NetLogo - 越来越多的领土
- 20. 越来越指数元素
- 21. 越来越java.lang.NoSuchMethodError
- 22. 越来越org.springframework.web.bind.MissingServletRequestParameterException
- 23. 的XPath越来越
- 24. 越来越参数错误
- 25. 平均越来越多的变量
- 26. 越来越eXist数据库
- 27. 越来越多的信号手柄
- 28. 越来越多的树/分形动画
- 29. 越来越多用户的元在WordPress
- 30. 越来越多的文件标题
你必须在代码中完成: -/ – jdi 2012-07-08 04:55:58