我正在學習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. 越來越多的NSTableView行高度
- 2. 越來越多的機會
- 3. 越來越多維數值數組
- 4. 越來越多的日誌數據
- 5. ColdFusion越來越多的數字
- 6. Azure越來越多的Sql數據庫
- 7. getter和setter,越來越多領域
- 8. C#Event Handlers越來越多
- 9. BerkeleyDB越來越胖,越來越慢
- 10. 行是越來越在Oracle
- 11. 我越來越指針和整數
- 12. 越來越org.springframework.web.bind.MissingServletRequestParameterException
- 13. 平均越來越多的變量
- 14. 越來越eXist數據庫
- 15. 越來越多的信號手柄
- 16. 的getText是越來越觸發多次
- 17. 越來越以 '/'
- 18. 越來越
- 19. 越來越
- 20. 我越來越
- 21. 越來越元
- 22. 越來越表計數
- 23. 影像保存有越來越多的
- 24. 越來越部分
- 25. UIDatePicker越來越少
- 26. Webapp越來越慢,多個ajax請求
- 27. 越來越將XMLNode
- 28. pyspark越來越weeknumber
- 29. 我越來越DoublerenderError
- 30. 通過重新打開插件,函數被調用的次數越來越多
你必須在代碼中完成: -/ – jdi 2012-07-08 04:55:58