【发布时间】:2017-04-21 17:19:57
【问题描述】:
由于我是 PyQt 的新手,我正在尝试解决动态更改表格单元格颜色的问题 - 非常欢迎帮助。
如果 for 循环 在数组中找到 1 或 0,函数 testFunction 应该更改 tableWidget 颜色。是否可以设置此属性?盒子应该每 2 秒自动改变一次颜色,无需任何额外操作。检查下面的代码...
import sys, os
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setWindowTitle("Hello!")
self.tableWidget = QtGui.QTableWidget()
self.tableItem = QtGui.QTableWidgetItem()
self.tableWidget.resize(400,250)
self.tableWidget.setRowCount(1)
self.tableWidget.setColumnCount(1)
self.tableWidget.setItem(0,0, QtGui.QTableWidgetItem("START TOOL"))
self.tableWidget.item(0,0).setBackground(QtGui.QColor(100,100,150))
realLayout = QtGui.QVBoxLayout()
realLayout.addWidget(tableWidget)
self.setLayout(realLayout)
self.testFunction()
def testFunction(self) :
a = [1,0,1,1,1,1,1,0,0,0,0,0,1]
for i in range(0,len(a)) :
if a[i] == 1 :
self.tableWidget.item(0,0).setBackground(QtGui.QColor(100,100,100))
else :
self.tableWidget.item(0,0).setBackground(QtGui.QColor(0,255,0))
time.sleep(2)
def main():
app = QtGui.QApplication(sys.argv)
GUI = MainWindow()
GUI.show()
sys.exit(app.exec_())
if __name__ == '__main__' :
main()
【问题讨论】:
-
您的代码不起作用,因为您需要先将数据添加到 tableWidget。目前,您的 tableWidget 是空的。这是一个关于如何添加数据的简单example。此外,您需要对
tableWidget进行单一引用,为此请改用self.tableWidget。 -
感谢@SyedElec。我已根据您的建议修改了代码。现在我仍然需要自动分配和更改表格单元格的颜色。主要思想是改变数组“a”中的项目应该会实时改变背景颜色。
-
@IvanB 如何更改数组“a”?
-
@eyllanesc 数组 "a" 将通过附加一些新的零和一值来动态更改(这不是这段代码的问题)
标签: python pyqt pyqt4 qtablewidget qtablewidgetitem