Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QProgressDialog, Как привязать Функцию к QProgressDialog 
:(
    Опции темы
OzMod
  Дата 12.1.2017, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: 1
Всего: 1



Как привязать Функцию к QProgressDialog..
Скажем после нажатия кнопки Test из нижеприведенного исходника, срабатывала скажем функция f() привязаная к QProgressDialog…
#———————————————————————–
Код

import sys, time
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.button = QtGui.QPushButton('Test', self)
        self.button.clicked.connect(self.handleButton)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)

#-----------------------------------------------------------------------------------------------

    def f(self):
        for x in range(150):
            print (x)   
#-----------------------------------------------------------------------------------------------

    def handleButton(self):
        file = range(100)
        numberOfLinesInFile = len(file)
        progressWasCancelled = False
        progress = QtGui.QProgressDialog("Parsing Log", "Stop", 0, numberOfLinesInFile, self)
        progress.setWindowModality(QtCore.Qt.WindowModal)
        progress.setMinimumDuration(0)
        for lineNumber, line in enumerate(file):
            progress.setValue(lineNumber)
            if progress.wasCanceled():
                progressWasCancelled = True
                break
            time.sleep(0.10)
        progress.setValue(numberOfLinesInFile)
        print ('cancelled', progress.wasCanceled(), progressWasCancelled)
        progress.deleteLater()

#------------------------------------------------------------------------------------------------

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

PM MAIL   Вверх
Romikgy
Дата 12.1.2017, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



Цитата(OzMod @  12.1.2017,  12:16 Найти цитируемый пост)
Скажем после нажатия кнопки Test из нижеприведенного исходника, срабатывала скажем функция f()

когда именно должна срабатывать эта ф-ция?

так?
Код

    def handleButton(self):
        file = range(100)
        numberOfLinesInFile = len(file)
        progressWasCancelled = False
        progress = QtGui.QProgressDialog("Parsing Log", "Stop", 0, numberOfLinesInFile, self)
        progress.setWindowModality(QtCore.Qt.WindowModal)
        progress.setMinimumDuration(0)
        for lineNumber, line in enumerate(file):
            progress.setValue(lineNumber)
            if progress.wasCanceled():
                progressWasCancelled = True
                break
            time.sleep(0.10)
        progress.setValue(numberOfLinesInFile)
        print ('cancelled', progress.wasCanceled(), progressWasCancelled)
        progress.deleteLater()
        self.f()


Это сообщение отредактировал(а) Romikgy - 12.1.2017, 13:30


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
Дата 12.1.2017, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: 1
Всего: 1



Romikgy, мне нужно что бы индикатор QProgressDialog шел пока выполняется функция f()
----------------------------------------------------------------------------------------------------------------------------------
Вообщем нужно  что бы  индикатор  подсчитал выполнение функции... 
PM MAIL   Вверх
OzMod
  Дата 12.1.2017, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: 1
Всего: 1



Romikgy, Индикатор и процесс функции f() должны выполняться одновременно, то есть индикатор должен отслеживать процесс выполнения функции f()
PM MAIL   Вверх
Romikgy
Дата 12.1.2017, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



так ?
Код

    def f(self,p):
        for x in range(150):
            print (x) 
            p.setValue(x)
            time.sleep(0.10)
            if p.wasCanceled(): break
            
#-----------------------------------------------------------------------------------------------
    def handleButton(self):
        file = range(100)
        numberOfLinesInFile = len(file)
        progressWasCancelled = False
        progress = QtGui.QProgressDialog("Parsing Log", "Stop", 0, numberOfLinesInFile, self)
        progress.setWindowModality(QtCore.Qt.WindowModal)
        progress.setMinimumDuration(0)
        self.f(progress)
        # for lineNumber, line in enumerate(file):
            # progress.setValue(lineNumber)
            # if progress.wasCanceled():
                # progressWasCancelled = True
                # break
            # time.sleep(0.10)
        progress.setValue(numberOfLinesInFile)
        print ('cancelled', progress.wasCanceled(), progressWasCancelled)
        progress.deleteLater()



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
Дата 13.1.2017, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: 1
Всего: 1



Romikgy, Cпасибо БОЛЬШОЕ! 
---------------------------------------------------

PM MAIL   Вверх
OzMod
  Дата 2.4.2017, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: 1
Всего: 1



помогите как мне решить одну проблему, не могу привязать очередную функцию к QProgressDialog!
Как привязать выполнение функции f() из примера показанного ниже  к QProgressDialog? 
----------------------------------------------------------------
Код

import sys, time, shutil, base64, zlib
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.button = QtGui.QPushButton('Запустить процесс', self)
        self.button.clicked.connect(self.handleButton)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)
#-----------------------------------------------------------------------------------------------
    def f(self):
        CodeOF = open("mypdf.pdf","rb")
        CodeRF = CodeOF.read()
        CodeOF.close()
        #---------------------------
        EncodeBase64 = base64.b64encode(CodeRF)
        #---------
        CompressDATE = zlib.compress(EncodeBase64)
        #---------
        CodeOF = open("mypdf.pdf","wb")
        CodeOF.write(CompressDATE)
        CodeOF.close()
        shutil.os.renames("mypdf.pdf","mypdf.pdf"+r".OzKEY")
#-----------------------------------------------------------------------------------------------
    def handleButton(self):
        file = range(100)
        numberOfLinesInFile = len(file)
        progressWasCancelled = False
        progress = QtGui.QProgressDialog("Статус выполнения", None, 0, numberOfLinesInFile, self)
        progress.setWindowModality(QtCore.Qt.WindowModal)
        progress.setMinimumDuration(0)
        for lineNumber, line in enumerate(file):
            progress.setValue(lineNumber)
            if progress.wasCanceled():
                progressWasCancelled = True
                break
            time.sleep(0.10)
        progress.setValue(numberOfLinesInFile)
        print ('cancelled', progress.wasCanceled(), progressWasCancelled)
        progress.deleteLater()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.1286 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.