헤더를 포함하여 qt 테이블의 선택한 부분을 복사하고 싶습니다. 기본 qt 테이블 복사본은 하나의 셀만 복사하는 반면 전체 선택 항목은 여러 열 및 여러 행이 될 수 있습니다. 나는 여러 장소 (대부분 here)에서 일부 코드를 접합했으며, 헤더가 아닌 셀 (데이터) 만 복사한다는 점을 제외하면 잘 작동하는 것 같습니다. 선택을위한 헤더를 얻는 데 도움이 필요합니다.복사 열 및 행 헤더를 포함한 pyqt 테이블 선택
예를 들어 col1 col2
row1 foo bar
row2 baz qux
내가 bar
및 bux
을 선택한 경우, 내가로 복사를하고 싶습니다 :
\t col2\n
row1 \t bar\n
row2 \t qux\n
이
from PyQt4 import QtGui, QtCore
import sys
class MainWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MainWidget, self).__init__(parent)
self.table = QtGui.QTableWidget(parent=self)
self.table.setColumnCount(2)
self.table.setRowCount(2)
self.table.setHorizontalHeaderLabels(['col1','col2'])
self.table.setVerticalHeaderLabels(['row1','row2'])
self.table.setItem(0,0,QtGui.QTableWidgetItem('foo'))
self.table.setItem(0,1,QtGui.QTableWidgetItem('bar'))
self.table.setItem(1,0,QtGui.QTableWidgetItem('baz'))
self.table.setItem(1,1,QtGui.QTableWidgetItem('qux'))
layout = QtGui.QGridLayout()
layout.addWidget(self.table, 1, 0)
self.setLayout(layout)
self.clip = QtGui.QApplication.clipboard()
def keyPressEvent(self, e):
if (e.modifiers() & QtCore.Qt.ControlModifier):
selected = self.table.selectedRanges()
if e.key() == QtCore.Qt.Key_C: #copy
s = ""
for r in xrange(selected[0].topRow(), selected[0].bottomRow()+1):
for c in xrange(selected[0].leftColumn(), selected[0].rightColumn()+1):
try:
s += str(self.table.item(r,c).text()) + "\t"
except AttributeError:
s += "\t"
s = s[:-1] + "\n" #eliminate last '\t'
self.clip.setText(s)
if __name__ == '__main__':
# Initialize the application
app = QtGui.QApplication(sys.argv)
mw = MainWidget()
mw.show()
app.exec_()
샘플 테이블은 다음과 같다 : 여기 내 몸매는 여전 하구나 샘플입니다
실제 케이스에 많은 열과 행이 있습니다. 내 어려움은 선택된 세포의 머리말을 알아내는 데있다. 서식을 다룰 수 있습니다. 어떤 도움이나 제안을 주셔서 감사합니다. 미리 감사드립니다!
세포를 클릭하면 (기본적으로) 굵은 헤더 항목이 아닌 같은 의미를 '선택'으로 변합니다. 머리글 항목을 클릭해도 '선택'되지 않습니다 (관련 행/열만). 선택한 셀에 해당하는 머리글/행 항목 집합을 원하거나 머리글 항목을 직접 선택할 수 있습니까? – mdurant
셀 그룹을 선택할 때 붙여 넣을 때 어떤 데이터인지 알 수 있도록 복사본에 헤더를 포함하고 싶습니다. 내가 원하는 것의 예를 포함하도록 편집하겠습니다. – fantabolous
샘플을 포함하도록 수정되었습니다. 기본적으로 그것은 내가 선택한 것에 대한 헤더를 얻는 방법을 모른다. – fantabolous