我正在尝试使用PyQt为Modbus模拟器构建UI。我已经为模拟信号设置了QTableView,但对于数字信号的用户输入,我希望有一列QCheckBox。但是,当我尝试引入此功能时,我陷入了不必要的QLineEdit的困扰,无法消除该复选框旁边的内容。
这是构建数字信号表的当前代码:
def create_digital_row(self, data_list):
"""
Get data for SDI tab
"""
value = ''
address = data_list[0]
bit = data_list[1]
name = data_list[2]
group = data_list[3]
ref = str(address) + '@' + str(bit) + '#'
digital_data = [address, bit, group, name, value, ref]
row_data = []
for column in xrange(0, len(digital_data)):
item = QtGui.QStandardItem(str(digital_data[column]))
item.setData(QtCore.Qt.AlignLeft, QtCore.Qt.TextAlignmentRole)
item.setData(QtCore.Qt.AlignVCenter, QtCore.Qt.TextAlignmentRole)
if column == 4:
item.setCheckable(True)
if column != 4:
item.setEditable(False)
row_data.append(item)
return row_data
我尝试将value
设置为None
,并且(当前)设置为空字符串。将其设置为None
会在不需要的QLineEdit中返回一个字符串“ None”,而空字符串只会产生一个空QLineEdit。
我已经阅读过Qt文档,并尝试了其他各种方法,例如setFlags
等,但是由于我缺乏知识,很难对问题进行故障排除。 SO或QtCentre似乎也未涵盖此问题-我发现与之最接近的是相反的(不需要的复选框),但解决方案不适用于我的情况。
我很欣赏我可以忽略它,但是出于我编码的质量以及仅仅是为了提高我的理解,我真的想深入浅出。
很抱歉,如果我有任何错误的术语,这对我来说都是新手。
干杯!