关于Pyqt5中QTableWidgetItem控件的无法设置编辑状态的BUG!

最近使用QTableWidgetItem控件时,发现我们在设置控件的flags时,只会让控件处理不可编辑不可选择状态,而无法转入可编辑状态。

PYQT版本为5.10.1,原为5.9

官方没有Python的文档,但从C++版本的文档中我们可以看到,对于flags的说明如下:

这不像是设置问题,应该是BUG。

上面的问题已经提交 QT官方,静等结果!

以下为测试源码:

from PyQt5.QtWidgets import QApplication,QTableWidgetItem,QTableWidget,QWidget,QHBoxLayout,QHeaderViewfrom PyQt5.QtCore import Qtimport sysclass test_bug(QWidget): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle('欢迎关注:python玩转网络,QTableWidgetItem测试') self.resize(500,350) table = QTableWidget() table.setColumnCount(3) table.setRowCount(4) table.setColumnWidth(0,150) table.setColumnWidth(1,150) for x in range(4): table.setRowHeight(x,50) table.horizontalHeader().setSectionResizeMode(2,QHeaderView.Stretch) qbox = QHBoxLayout() qbox.addWidget(table) item1 = QTableWidgetItem('NoItemFlags') item1.setFlags(Qt.NoItemFlags) item2 = QTableWidgetItem('ItemIsSelectable') item2.setFlags(Qt.ItemIsSelectable) item3 = QTableWidgetItem('ItemIsEditable') item3.setFlags(Qt.ItemIsEditable) item4 = QTableWidgetItem('ItemIsDragEnabled') item4.setFlags(Qt.ItemIsDragEnabled) item5 = QTableWidgetItem('ItemIsDropEnabled') item5.setFlags(Qt.ItemIsDropEnabled) item6 = QTableWidgetItem('ItemIsUserCheckable') item6.setFlags(Qt.ItemIsUserCheckable) item7 = QTableWidgetItem('ItemIsEnabled') item7.setFlags(Qt.ItemIsEditable) item8 = QTableWidgetItem('ItemIsAutoTristate') item8.setFlags(Qt.ItemIsAutoTristate) item9 = QTableWidgetItem('ItemIsTristate') item9.setFlags(Qt.ItemIsTristate) item10 = QTableWidgetItem('ItemNeverHasChildren') item10.setFlags(Qt.ItemNeverHasChildren) item11 = QTableWidgetItem('ItemIsUserTristate') item11.setFlags(Qt.ItemIsUserTristate) item12 = QTableWidgetItem('无设置') table.setItem(0,0,item1) table.setItem(0,1,item2) table.setItem(0,2,item3) table.setItem(1,0,item4) table.setItem(1,1,item5) table.setItem(1,2,item6) table.setItem(2,0,item7) table.setItem(2,1,item8) table.setItem(2,2,item9) table.setItem(3,0,item10) table.setItem(3,1,item11) table.setItem(3,2,item12) self.setLayout(qbox) self.show()if __name__ == '__main__': app = QApplication(sys.argv) ui = test_bug() sys.exit(app.exec_())

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180327G0BPVS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券