Найти - Пользователи
Полная версия: [PyQt] автоматический скроллинг вниз списка при добавлении
Начало » GUI » [PyQt] автоматический скроллинг вниз списка при добавлении
1
nis
Пишу небольшой чат с использованием 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()"))
Если есть необходимость, могу в последствии предоставить весь код.
reclosedev
nis
Если есть необходимость, могу в последствии предоставить весь код.
Лучше минимальный запускаемый пример, ни к чему не привязанный.

А так, только догадки. Возможно, где то не обновляется размер виджетов или значение скроллбара.
Можно попробовать добавить QApplication.processEvents() после widget.show() и после vbar.setValue().
nis
reclosedev
Можно попробовать добавить QApplication.processEvents() после widget.show() и после vbar.setValue().
Добавил после widget.show - помогло.

Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB