python - 如何通过点击 QtableWidget 中的删除键来删除一行?
问题描述
我想在不添加按钮的情况下删除我的 Qtablewidget 的一行,只需按键盘 Delete 键即可。我知道,我需要使用关键事件,但不确定如何将偶数分配给特定的表格小部件,并且在 GUI 中有其他选项卡的其他部分中不会激活关键事件(长话短说:关键事件只是专用于特定表)。
按钮删除样式:
for i in rows:
self.tableWidget.removeRow(i)
尝试关键事件:
QtCore.Qt.Key_Delete
QtGui.QTableWidget.keyPressEvent(...,...)
解决方案
最简单的方法是继承QTableWidget
并实现你自己的keyPressEvent
,例如
import sys
from PyQt5 import QtCore, QtWidgets
class Main(QtWidgets.QTableWidget):
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Delete:
row = self.currentRow()
self.removeRow(row)
else:
super().keyPressEvent(event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main = Main()
main.setColumnCount(3)
for i in range(4):
main.insertRow(main.rowCount())
for j in range(main.columnCount()):
main.setItem(i, j, QtWidgets.QTableWidgetItem(f'row {i}, column{j}'))
main.show()
sys.exit(app.exec_())
推荐阅读
- pandas - 如何通过循环使用 Pandas DataFrame 中相邻列的平均值填充 NaN 值
- java - Android javax.net.ssl.SSLHandshakeException:连接被对等方关闭
- python - 如何在数组中找到N个连续数字相等?
- spring - Spring 集成 AMQP
- mysql - 有没有办法获得一年中每个月我的表中有多少行?
- ios - pod lib 创建部署目标
- python - 如何使用 Tkinter 从文本中仅删除一行的最后一个字符
- flutter - 选择某些内容时下拉菜单不更新(颤振)
- c - 在没有开发板的情况下在 Windows 上的 Eclipse 中运行 ARM 代码?
- intellij-idea - 如何在 IntellijIDEA 而不是 XCode 中打开 .bazel 文件扩展名?