我想删除 Qtablewidget 的一行而不添加按钮,只需按键盘上的删除键即可。我知道,我需要使用按键事件,但不确定如何将事件分配给特定的表格小部件,并且在 GUI 中具有其他选项卡的其他部分中不会激活按键事件(长话短说:按键事件只是专用于特定的表)。
按钮删除样式:
for i in rows:
self.tableWidget.removeRow(i)
Run Code Online (Sandbox Code Playgroud)
尝试关键事件:
QtCore.Qt.Key_Delete
QtGui.QTableWidget.keyPressEvent(...,...)
Run Code Online (Sandbox Code Playgroud)
最简单的方法是子类化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_())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3370 次 |
| 最近记录: |