【非阿里体系 QT快速上手】
只要知道换行符就能上手的Pyqt复制粘贴代码
下面是复制和粘贴的格式
\t | \t | \t | \n |
---|---|---|---|
\t | \t | \t | \n |
\t | \t | \t | \n |
支持复制粘贴,对于【表哥】【表姐】来说十分,效率提高不少
# coding=utf-8
def keyPressEvent(self, e):
# CTRL + C COPY TEXT TO CLIPBOARD
if (e.modifiers() & QtCore.Qt.ControlModifier):
if e.key() == QtCore.Qt.Key_C:
self.copy()
# CTRL + V PASTE
if (e.modifiers() & QtCore.Qt.ControlModifier):
if e.key() == QtCore.Qt.Key_V:
self.paste()
# CTRL + S LOAD_FILE
if (e.modifiers() & QtCore.Qt.ControlModifier):
if e.key() == QtCore.Qt.Key_S:
self.save_csv()
# DELETE SELECTION
if e.key() == QtCore.Qt.Key_Delete:
self.del_sel()
def del_sel(self):
# CONVERT FIRST SELECT RANGE TO INDICE NUMBER
sel = self.tv.selectedRanges()
r1 = sel[0].topRow()
r2 = sel[0].bottomRow()
c1 = sel[0].leftColumn()
c2 = sel[0].rightColumn()
for i in range(r1,r2+1):
for j in range(c1,c2+1):
nullItem = QTableWidgetItem("")
self.tv.setItem(i,j,nullItem)
def paste(self):
sel = self.tv.selectedRanges()
r = sel[0].topRow()
c = sel[0].leftColumn()
text = self.clip.text()
text = text[:-1]
line = text.split("\n")
for i,string in enumerate(line):
# print(string)
string = string[:-1]
cells = string.split('\t')
for j,cell in enumerate(cells):
Item = QTableWidgetItem(cell)
self.tv.setItem(r+i, c+j,Item)
def copy(self):
# CONVERT FIRST SELECT RANGE TO INDICE NUMBER
sel = self.tv.selectedRanges()
r1 = sel[0].topRow()
r2 = sel[0].bottomRow()
c1 = sel[0].leftColumn()
c2 = sel[0].rightColumn()
clipBoard_str = ''
for i in range(r1,r2+1):
for j in range(c1,c2+1):
try:
clipBoard_str += self.tv.item(i,j).text() + "\t"
except AttributeError:
clipBoard_str += "\t"
clipBoard_str = clipBoard_str[:-1] + "\n" #eliminate last '\t'
self.clip.setText(clipBoard_str)
print(clipBoard_str)
重点代码分析,用\t和\n拼接字符串.把行末的换行符去除
for i in range(r1,r2+1):
for j in range(c1,c2+1):
# 用\t和\n拼接字符串
try:
clipBoard_str += self.tv.item(i,j).text() + "\t"
except AttributeError:
clipBoard_str += "\t"
clipBoard_str = clipBoard_str[:-1] + "\n" #eliminate last '\t'
【Python】