簡體   English   中英

pyqt5 QTableWidget 僅在選擇整行時刪除行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM