Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Разработка GUI > pyqt4 > mysqldb execute > Busy QProgressBar


Автор: pyqt 9.5.2008, 12:12
Привет всем! Необходимо создать функцию, которая перед SQL запросом вызывает QDialog c Busy QProgressBar, а после скрывает его.
Это необходимо, потому что SQL сервер удаленный и может долго процессить запросы

Все что у меня получилось, это показывать диалог, скрывать его, но! Во время выполнения SQL запроса progressbar не анимируется вообще, а только после sql запроса (если не скрывать форму).

Вот то, что получилось:
class sql:
# skipped #
def executeX(self,q):

        self.app.myDialog.show()
        self.app.myProgress.setValue(random.randint(1,100))
        QtGui.QApplication.processEvents(QtCore.QEventLoop.AllEvents)
       
        self.dbc.execute(q)

        self.app.myDialog.hide()

Как заставить progressBar анимироваться? Или может в отдельном потоке приплюсовывать значения? (я пробовал, но не получается обращаться с одного потока к объектам другого потока)

Заранее всем спасибо

P.S. Всех с Великим праздником!

Автор: _Viper_ 12.5.2008, 12:17
Выполняй self.dbc.execute(q) в отдельном потоке.

Автор: pyqt 12.5.2008, 16:52
Спасибо, все уже разрешилось

Автор: aspolyakov 13.9.2008, 18:12
Здраствуйте, покажите как у вас дело решилось. У меня тоже примерно, через екзекьют выполняю звпросы, каждый в своей нити. После выполнения нити меняется прогрессбар, но на деле выходит, что сначало нити долго виснут, а потом быстро добегают до конца бара. Линк на доки или на пример тоже был бы кстати.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)