【问题标题】:Only allow values in a QTableWidget column只允许 QTableWidget 列中的值
【发布时间】: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ý - 如果可能的话,最好是浮动 :)
  • @ErikŠťastný - 感谢您的链接,我得看看如何将 c++ 翻译成 python!
  • 或者您可以简单地在项目更改事件上绑定一些代码,但它对用户不友好,因为它允许编写其他字符但输入后删除它们。

标签: python qtablewidget


【解决方案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 那么答案是否足够?或者您对实施有任何问题?
  • 这是一个很好的解决方法,所以暂时接受它,再次感谢:)
猜你喜欢
  • 1970-01-01
  • 2019-08-12
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 2011-06-24
  • 1970-01-01
相关资源
最近更新 更多