python - 类中的多线程和方法缺少位置参数,尽管它们已通过
问题描述
我有一个包含不同单元格的表格,每当它们的值发生变化时,我想为它们着色 0.2 秒(如果新值较低,则为红色,如果新值较高,则为绿色)。所以我的想法是每次从数据库中读取一个新值时,创建一个新线程,将单元格的颜色更改为红色/绿色 0.2 秒,然后将其更改回白色,然后终止该线程以便我不要以 1000000 个不同的线程结束:
class DataStream(Thread):
def __init__(self,queue):
Thread.__init__(self)
self.queue = queue
def run(self):
#(HERE GOES CODE LISTENING TO SOME DATA, IRRELEVANT FOR DISCUSSION)
if doc['new_val'][new] > doc['old_val'][new]:
flag = 1
elif doc['new_val'][new] < doc['old_val'][new]:
flag = -1
queue = Queue()
flash = ColorCells(queue,flag,ui.parameters.item(maturity_dates.index(exp),h_headers.index(new)))
flash.daemon = True
flash.start()
class ColorCells(Thread):
def __init__(self,queue,flag,item):
Thread.__init__(self)
self.queue = queue
self.flag = flag
self.item = item
self.run(self.flag,self.item)
def run(self,flag,item):
if flag == 1:
colorb = QtGui.QColor(0,255,0)
elif flag == -1:
colorb = QtGui.QColor(255,0,0)
item.setBackground(colorb)
time.sleep(0.2)
item.setBackground(QtGui.QColor(255,255,255))
self._stop()
为了您的信息,我将它与 PyQt 一起使用,因此 item 变量和 ui.parameters.item(x,y) 来指示我想要将颜色更改为的单元格。
我得到的错误是我在 run() 方法(标志和项目)中缺少 2 个位置参数。我还想知道我是否在 ColorCells.run() 中使用 self.stop() 正确地杀死了线程。谢谢!
解决方案
推荐阅读
- vue.js - 如何在弹性搜索中存储数据?
- javascript - 如何在按钮单击时切换输入值
- http - 使用HTTP请求html文件,为什么TCP序列号不连续?
- c# - 你调用的对象是空的。在 datagridview 实体框架中使用 LinQ 添加两个表
- java - 使用容器的 SQL 字符串查询
- r - 如何克服将 Bookdown 构建为 ePub 格式的错误?
- php - 自定义集合 magento 2 中的分页
- php - 我正在尝试在我的插件中创建一个功能,该功能可以选择开始日期和结束日期以及房间的数量
- c# - 安装后运行应用程序
- google-sheets - 在 Google 表格中提取“-”字符后的子字符串