Python 如何在QTablewidget列的列上应用验证器?

Python 如何在QTablewidget列的列上应用验证器?,python,python-3.x,pyqt,pyqt5,qtablewidget,Python,Python 3.x,Pyqt,Pyqt5,Qtablewidget,我已经在Qt设计器中创建了一个表。在表的第2列中,我希望用户输入的内容只能是大写字母。如何做到这一点? 在这里,我无法理解QTableWidget或QTableWidgetItem的哪个实用程序可以在这里使用 您可以使用委托修改用户输入: 从PyQt5导入QtCore、QtGui、qtwidget 类UpperDelegate(QtWidgets.QStyledItemDelegate): def createEditor(自身、父项、索引、选项): editor=super(UpperDel

我已经在Qt设计器中创建了一个表。在表的第2列中,我希望用户输入的内容只能是大写字母。如何做到这一点?


在这里,我无法理解QTableWidget或QTableWidgetItem的哪个实用程序可以在这里使用

您可以使用委托修改用户输入:

从PyQt5导入QtCore、QtGui、qtwidget
类UpperDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(自身、父项、索引、选项):
editor=super(UpperDelegate,self).createEditor(父级,索引,选项)
font=QtGui.QFont(editor.font())
font.setcapitalize(QtGui.QFont.AllUppercase)
编辑器.setFont(字体)
返回编辑器
“”“def initStyleOption(self、option、index):
super(UpperDelegate,self).initStyleOption(option,index)
font=QtGui.QFont(option.font)
font.setcapitalize(QtGui.QFont.AllUppercase)
option.font=font”“”
def setModelData(自身、编辑器、模型、索引):
text=editor.property(“text”)
如果isinstance(文本,str):
editor.setProperty(“text”,text.upper())
super(UpperDelegate,self).setModelData(编辑器、模型、索引)
#model.setData(index,editor.text().upper(),QtCore.Qt.DisplayRole)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=QtWidgets.QTableWidget(10,4)
委派=上级委派(w)
w、 setItemDelegateForColumn(1,委托)
w、 show()
sys.exit(app.exec_())