在tableview中添加右鍵復制,想要定位多選的行號和列號,獲取到的老是這個東西[<PyQt5.QtCore.QModelIndex object at 0x00000000043B3BA0>].....,請看看是什么問題
原始碼如下:
# coding=utf-8
import sys
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Table(QWidget):
def __init__(self,parent=None):
super(Table, self).__init__(parent)
#設定標題與初始大小
self.setWindowTitle('QTableView表格復選框案例')
self.resize(500,300)
self.tableView=QTableView()
self.model = QStandardItemModel(self.tableView)
#設定資料層次結構,4行4列
self.model=QStandardItemModel(4,4)
t = QCheckBox(self)
#設定水平方向四個頭標簽文本內容
self.model.setHorizontalHeaderLabels(['狀態','姓名','身份證','地址'])
for row in range(4):
for column in range(4):
item_checked = QStandardItem()
item_checked.setCheckState(Qt.Checked)
item_checked.setCheckable(True)
self.model.setItem(column,0, item_checked)
item=QStandardItem('row %s,column %s'%(row,column))
#設定每個位置的文本值
self.model.setItem(row,column,item)
self.tableView.setModel(self.model)
#設定布局
layout=QVBoxLayout()
layout.addWidget(self.tableView)
self.setLayout(layout)
# 如果用在QTableView中使用右鍵選單,需啟用該屬性
self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
# 創建QMenu信號事件
self.tableView.customContextMenuRequested.connect(self.showMenu)
self.contextMenu = QMenu(self)
self.CP = self.contextMenu.addAction('復制')
self.CP.triggered.connect(self.selected_tb_text)
def selected_tb_text(self):
indexes = self.tableView.selectedIndexes()
print(indexes)
def showMenu(self, pos):
# pos 滑鼠位置
# 選單顯示前,將它移動到滑鼠點擊的位置
self.contextMenu.exec_(QCursor.pos()) # 在滑鼠位置顯示
if __name__ == '__main__':
app=QApplication(sys.argv)
table=Table()
table.show()
sys.exit(app.exec_())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271687.html
