Найти - Пользователи
Полная версия: Связать QProgressBar и обработку в другом модуле
Начало » GUI » Связать QProgressBar и обработку в другом модуле
1
cormorant
Смотрел здесь: http://python.su/forum/viewtopic.php?id=9411 в общем.
Допустим у меня такой код - простое приложение:
#!/usr/bin/env python
#coding: utf-8
from PyQt4.QtCore import *
from PyQt4.QtGui import *
#from time import sleep
import test_another_module as tam

class AppForm(QMainWindow):
def __init__(self, parent=None):
super(AppForm, self).__init__(parent)
self.pbar = QProgressBar(self)
self.btn = QPushButton(u'OK')
# щелчок по кнопке - старт
self.connect(self.btn, SIGNAL('clicked()'), tam.process)#self.start)
self.v = QSplitter(Qt.Vertical)
self.v.addWidget(self.pbar)
self.v.addWidget(self.btn)
self.setCentralWidget(self.v)

def start(self):
size = 100000
self.pbar.setMinimum(0)
self.pbar.setMaximum(size)
for i in xrange(size+1):
self.pbar.setValue(i)
print 'finished'

if __name__ == "__main__":
app = QApplication(sys.argv)
form = AppForm()
form.show()
app.exec_()
Но если у меня обработка ведётся в трёхэтажном цикле в другом модуле (tam.process) - как мне отправлять информацию о выполнении цикла прогрессБару?
p.s. с потоками не разбирался
Андрей Светлов
Речь не о потоках, насколько я понимаю.

Смотрите на http://www.python.su/forum/viewtopic.php?pid=65860#p65860 и делайте выводы.
Soteric
Вас спасет MVP. Грубо говоря, вам нужен некий класс, который имел бы одновременно ссылку на ответственного за то, что происходит в tam.process и ссылку на виджеты (в том числе прогресс бар). Тогда можно было бы организовать передачу данных по цепочке от модели (тот самый tam.process ответственный) через представителя (некий класс, который имеет ссылку на все и всех) в представление (ваши виджеты) посредством прямых вызовов или через события.
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