Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyqt5 QTableWidget仅在选择整行时删除该行_Python_Pyqt5_Qtablewidget - Fatal编程技术网

Python pyqt5 QTableWidget仅在选择整行时删除该行

Python pyqt5 QTableWidget仅在选择整行时删除该行,python,pyqt5,qtablewidget,Python,Pyqt5,Qtablewidget,我正在编写一个分析CSV文件的GUI,我想实现一个功能,在这个功能中,只有选中整行时,才会删除该行。我当前的问题是,当我选择一个单元格并单击backspace时,所选单元格所在的行也将被删除。我如何防止这种情况 from GUI import Ui_MainWindow from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.Qt import Qt from PyQt5.QtCore import QItemSelectionModel fr

我正在编写一个分析CSV文件的GUI,我想实现一个功能,在这个功能中,只有选中整行时,才会删除该行。我当前的问题是,当我选择一个单元格并单击backspace时,所选单元格所在的行也将被删除。我如何防止这种情况

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()

我在代码中确实喜欢这个。它在按下按钮时运行。您可以使用backspace将其绑定

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())

谢谢,但它给了我一个错误:AttributeError:“内置函数”或“方法”对象没有属性“selectedRows”,很抱歉应该是selectionModel()。selectedRows()像testDRow index=QtCore.QPersistentModelIndex(modelIndex)中的第287行“/Users/yayuni/Desktop/HerbariumGUI/main.py”那样尝试TypeError:参数与任何重载调用不匹配:QPersistentModelIndex():参数太多QPersistentModelIndex(QModelIndex):参数1具有意外的类型“list”QPersistentModelIndex(QPersistentModelIndex):参数1具有意外的“列表”类型,然后在按键事件中,在调用removeRow之前添加更多if,验证是否选择了整行。如何验证是否选择了整行?这是您要完成的调查的一部分。Stackoverflow并不是让社区为你搜索的最佳场所。