[英]pyqt5 QTableWidget delete the row only when the whole row is selected
我正在編寫一個分析 CSV 文件的 GUI,我想實現一個 function,其中只有在選擇整行時才會刪除該行。 我目前的問題是當我 select 一個單元格並按退格鍵時,所選單元格所在的行也將被刪除。 我該如何防止這種情況?
from GUI import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import Qt
from PyQt5.QtCore import QItemSelectionModel
from PyQt5.QtWidgets import (QApplication,QMainWindow,QFileDialog,QTableWidget,
QMessageBox,QTableWidgetItem,QHeaderView)
class mainForm(QMainWindow,Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
self.initUI()
def keyPressEvent(self, event):
if event.key() == Qt.Key_Backspace:
self.removeRow()
def selectedRow(self):
if self.tabWidget.currentIndex() is 0 and self.inLoanTable.selectionModel().hasSelection():
row = self.inLoanTable.selectionModel().selectedIndexes()[0].row()
return int(row)
def removeRow(self):
if self.tabWidget.currentIndex() is 0 and self.inLoanTable.rowCount() > 0:
row = self.selectedRow()
我在我的代碼中確實這樣做了。 它在按下按鈕時運行。 你可以用退格鍵綁定它。
def deleteItem(self):
model_index = self.tableWidget.selectionModel().selectedRows()
index = QtCore.QPersistentModelIndex(model_index)
self.tableWidget.remoweRow(index.row())
如果你想刪除多行,你也可以這樣做。
def deleteItem(self):
index_list = []
for model_index in self.tableWidget.selectionModel().selectedRows()
index = QtCore.QPersistentModelIndex(model_index)
index_list.append(index)
for index in index_list:
self.tableWidget.remoweRow(index.row())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.