QTableWidget 验证编号范围
QTableWidget validation number range
如何在每个单元格中实施输入验证?我希望输入是介于 0 和 100
范围内的整数
一个选项是将 QIntValidator 设置为委托创建的编辑器:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Delegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = super().createEditor(parent, option, index)
if isinstance(editor, QtWidgets.QLineEdit):
validator = QtGui.QIntValidator(0, 100, editor)
editor.setValidator(validator)
return editor
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
table_widget = QtWidgets.QTableWidget(10, 4)
table_widget.resize(640, 480)
table_widget.show()
delegate = Delegate()
table_widget.setItemDelegate(delegate)
app.exec_()
另一种选择是使用 QSpinBox 作为已经有验证器的编辑器。
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Delegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
return QtWidgets.QSpinBox(parent, minimum=0, maximum=100)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
table_widget = QtWidgets.QTableWidget(10, 4)
table_widget.resize(640, 480)
table_widget.show()
delegate = Delegate()
table_widget.setItemDelegate(delegate)
app.exec_()
如何在每个单元格中实施输入验证?我希望输入是介于 0 和 100
范围内的整数一个选项是将 QIntValidator 设置为委托创建的编辑器:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Delegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = super().createEditor(parent, option, index)
if isinstance(editor, QtWidgets.QLineEdit):
validator = QtGui.QIntValidator(0, 100, editor)
editor.setValidator(validator)
return editor
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
table_widget = QtWidgets.QTableWidget(10, 4)
table_widget.resize(640, 480)
table_widget.show()
delegate = Delegate()
table_widget.setItemDelegate(delegate)
app.exec_()
另一种选择是使用 QSpinBox 作为已经有验证器的编辑器。
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Delegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
return QtWidgets.QSpinBox(parent, minimum=0, maximum=100)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
table_widget = QtWidgets.QTableWidget(10, 4)
table_widget.resize(640, 480)
table_widget.show()
delegate = Delegate()
table_widget.setItemDelegate(delegate)
app.exec_()