只允许 QTableWidget 列中的值
Posted
技术标签:
【中文标题】只允许 QTableWidget 列中的值【英文标题】:Only allow values in a QTableWidget column 【发布时间】:2017-04-06 12:29:17 【问题描述】:如果我有一个非常简单的QTableWidget,如下所示:
data = ['first_row', 'second_row', 'third_row']
qTable = self.dockwidget.tableWidget
qTable.setRowCount(len(data))
qTable.setColumnCount(2)
for row in range(len(data)):
for col in [0]:
item = QTableWidgetItem(str(data[row]))
qTable.setItem(row,col,item)
for col in [1]:
qTable.setItem(row,col,'0.1')
我怎样才能使在第二列(默认值为0.1
)中,用户只能输入值而不能输入字符串?
【问题讨论】:
值是指整数? @ErikŠťastný - 如果可能的话,最好是浮动 :) 看看这个:***.com/questions/22708623/… @ErikŠťastný - 感谢您的链接,我得看看如何将 c++ 翻译成 python! 或者您可以简单地在项目更改事件上绑定一些代码,但它对用户不友好,因为它允许编写其他字符但输入后删除它们。 【参考方案1】:你可以使用这样的东西,但我认为会有更好的解决方案。
self.ui.tableWidget.itemChanged.connect(self.item_changed)
def item_changed(self, Qitem):
try:
test = float(Qitem.text())
except ValueError:
Msgbox = QMessageBox()
Msgbox.setText("Error, value must be number!")
Msgbox.exec()
Qitem.setText(str(0.1))
【讨论】:
感谢您的回答,将对此进行测试并报告:) @Joseph 那么答案是否足够?或者您对实施有任何问题? 这是一个很好的解决方法,所以暂时接受它,再次感谢:)以上是关于只允许 QTableWidget 列中的值的主要内容,如果未能解决你的问题,请参考以下文章
兄弟或兄弟AtRow()函数如何从QTableWidget中的隐藏列中检索值?
使用 PyQt/PySide 禁用 QTableWidget 中特定列中的排序箭头