Форум сайта python.su
Пишу небольшой чат с использованием comet web server. Сообщения получаются в параллельном потоке и отправляются используя сигнал. Также в конце добавления сообщения на форму отправляется сигнал который вызывает функцию прокрутки списка вниз.
Однако прокрутка происходит на значение равное - 1 последнее сообщение.
Это функция прокрутки:
def scrolling(self): vbar.setValue(vbar.maximum())
def main_slot(self, j_message): message = j_message[0]['data']['message'] j_name = j_message[0]['data']['name'] r_name = re.search("<span\sclass=\"\w+\">(.+?)<", j_name) name = r_name.group(1) widget = QtGui.QWidget(main.mwMain.saChat) layout = QtGui.QVBoxLayout(widget) lbName = QtGui.QLabel('<b>' + name + '</b>') lbMessage = QtGui.QLabel(message) layout.addWidget(lbName) layout.addWidget(lbMessage) vbox.addWidget(widget) widget.show() self.emit( SIGNAL("chat_scrolling()"))
Офлайн
nisЛучше минимальный запускаемый пример, ни к чему не привязанный.
Если есть необходимость, могу в последствии предоставить весь код.
Офлайн
reclosedevДобавил после widget.show - помогло.
Можно попробовать добавить QApplication.processEvents() после widget.show() и после vbar.setValue().
Офлайн