[英]How to place cursor at the beginning of a cell of QTableWidget
我正在使用以下 PyQt 代碼,並且要求光標應在單元格 0,1 的開頭閃爍
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
data = {'col1':['1','2','3'], 'col2':['4','5','6'], 'col3':['7','8','9']}
class MyTable(QTableWidget):
def __init__(self, data, *args):
QTableWidget.__init__(self, *args)
self.data = data
self.setmydata()
self.resizeColumnsToContents()
self.resizeRowsToContents()
self.setCursorPosition()
def setmydata(self):
horHeaders = []
for n, key in enumerate(sorted(self.data.keys())):
horHeaders.append(key)
for m, item in enumerate(self.data[key]):
newitem = QWidget()
self.setCellWidget(m, n, newitem)
self.setHorizontalHeaderLabels(horHeaders)
def setCursorPosition(self):
wid = self.cellWidget(0,1)
wid.setCursor(QCursor(Qt.WaitCursor))
wid.setFocus()
要求是在單元格 0,1 的開頭閃爍光標。 方法 setCursorPosition 中的行對我沒有幫助。 有人可以幫我解決這個問題嗎
根據您的代碼,您將 QWidget 設置為不處理光標的 cellwidget,而不是閃爍的光標。 所以你不應該使用 QWidget,也許 QLineEdit 應該是一個更好的選擇,雖然我發現沒有必要使用 cellwidget,因為它足以打開默認使用edit()
方法的edit()
。
import sys
from PyQt4.QtGui import QApplication, QTableWidget, QTableWidgetItem
class MyTable(QTableWidget):
def __init__(self, data, parent=None):
super(MyTable, self).__init__(parent)
self.data = data
self.setCustomData()
self.resizeColumnsToContents()
self.resizeRowsToContents()
index = self.model().index(0, 1)
self.edit(index)
def setCustomData(self):
labels = list(self.data.keys())
self.setColumnCount(len(labels))
self.setHorizontalHeaderLabels(labels)
for i, (key, value) in enumerate(self.data.items()):
for j, v in enumerate(value):
if j >= self.rowCount():
self.insertRow(self.rowCount())
it = QTableWidgetItem(v)
self.setItem(j, i, it)
if __name__ == "__main__":
app = QApplication(sys.argv)
data = {"col1": ["1", "2", "3"], "col2": ["4", "5", "6"], "col3": ["7", "8", "9"]}
w = MyTable(data)
w.show()
sys.exit(app.exec_())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.