Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2016 09:45:19

MyNick
Зарегистрирован: 2016-02-26
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

GUI PyQt4 и многопоточность

#!C:\usr\Python\python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import uic
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from TxtToPDF import PDF
def selectFile():
    window.File.setText(QFileDialog.getOpenFileName())
def ConvertTxtToPDF(File):
    window.ConvertTxtToPDFButton.setText(u"Конвертация...")
    window.ConvertTxtToPDFButton.setCheckable(True)
    window.ConvertTxtToPDFButton.setChecked(True)
    pdf = PDF()
    pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
    pdf.print_chapter(2, 'THE PROS AND CONS', File)
    pdf.output(File[:-3]+'pdf', 'F')
    QMessageBox.information(window, u"Info",u"Convert files in "+File[:-3]+u"pdf",buttons=QMessageBox.Close,defaultButton=QMessageBox.Close)
    window.ConvertTxtToPDFButton.setText(u"Конвертировать")
    window.ConvertTxtToPDFButton.setChecked(False)
app = QApplication(sys.argv)
window = uic.loadUi("ui.ui")
window.show()
QObject.connect(window.SelectTxtFile, SIGNAL('clicked()'), selectFile)
QObject.connect(window.ConvertTxtToPDFButton, SIGNAL('clicked()'), lambda : ConvertTxtToPDF(unicode(window.File.text())))
sys.exit(app.exec_())

Проблема заключается в том, что сначала выполняется код:

pdf = PDF()
pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
pdf.print_chapter(2, 'THE PROS AND CONS', File)
pdf.output(File[:-3]+'pdf', 'F')

, а затем
window.ConvertTxtToPDFButton.setText(u"Конвертация...")
window.ConvertTxtToPDFButton.setCheckable(True)
window.ConvertTxtToPDFButton.setChecked(True)

Я пытался использовать многопоточность, но кнопка изменяется только после сохранения PDF.

Офлайн

#2 Июнь 30, 2016 10:43:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

GUI PyQt4 и многопоточность

> Проблема заключается в том, что сначала выполняется код

Код выполняется так как надо, а проблема заключается в том что ты ООП не знаешь.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version