Многопоточность и метод в классе отсутствуют позиционные аргументы, хотя они передаются - PullRequest
0 голосов
/ 13 июня 2018

У меня есть таблица с разными ячейками, которую я хочу покрасить на 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), чтобы указатьячейка, которую я хочу изменить на цвет.

Ошибка, которую я получаю, состоит в том, что мне не хватает 2 позиционных аргументов в методе run () (флаг и элемент).Я также хотел бы знать, правильно ли я убиваю поток, используя self.stop () в ColorCells.run ().Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...