Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PyQT4 не возвращает значение / 3 сообщений из 3, страница 1 из 1
31.08.2014, 06:39
    #38733503
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PyQT4 не возвращает значение
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys

class CaptchaDialog(object):
    def __init__(self, image_data):
        self.inputText = ''
        self.dlg = QtGui.QDialog()
        self.dlg.setObjectName('Dialog')
        self.dlg.resize(320, 240)
        self.dlg.setWindowTitle(u'Ввод капчи')
        self.bb = QtGui.QDialogButtonBox(self.dlg)
        self.bb.setGeometry(QtCore.QRect(10, 200, 300, 30))
        self.bb.setOrientation(QtCore.Qt.Horizontal)
        self.bb.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)
        # self.bb.setObjectName('buttonBox')
        self.le = QtGui.QLineEdit(self.dlg)
        self.le.setGeometry(QtCore.QRect(100, 170, 120, 20))
        self.le.setMinimumSize(QtCore.QSize(0, 20))
        self.le.setMaxLength(255)
        self.le.setPlaceholderText(u'Введите символы')
        self.le.setObjectName('lineEdit')
        self.lbl = QtGui.QLabel(self.dlg)
        self.lbl.setGeometry(QtCore.QRect(15, 10, 290, 140))
        self.lbl.setObjectName('label')
        # Добавляем картинку
        self.lbl.setAlignment(QtCore.Qt.AlignCenter)
        qimg = QtGui.QImage.fromData(image_data)
        pixmap = QtGui.QPixmap.fromImage(qimg)
        self.lbl.setPixmap(pixmap)
        # ...
        QtCore.QObject.connect(self.bb, QtCore.SIGNAL('accepted()'), self.on_accept)
        QtCore.QObject.connect(self.bb, QtCore.SIGNAL('rejected()'), self.dlg.reject)
        # what is it?
        QtCore.QMetaObject.connectSlotsByName(self.dlg)
        self.dlg.show()

    def on_accept(self):
        self.inputText = self.le.text()
        self.dlg.accept()

def render_captcha(image_data):
    app = QtGui.QApplication(sys.argv)
    ui = CaptchaDialog(image_data)
    # sys.exit(app.exec_())
    print '!'
    app.exec_()
    return ui.inputText

if __name__ == '__main__':
    import urllib
    r = urllib.urlopen('http://vk.com/captcha.php?sid=454603283955&s=1')
    data = r.read()
    print render_captcha(data)
    input('Press any key to exit.')



Переписал немного сгенерированный код. Не могу разобраться почему не возвращает значение.
...
Рейтинг: 0 / 0
31.08.2014, 06:44
    #38733504
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PyQT4 не возвращает значение
user199617, ужасная подсветка у вас на сайте
pastebin.com/Q3BBSm8g на пастебине получше выглядит
...
Рейтинг: 0 / 0
31.08.2014, 11:48
    #38733530
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PyQT4 не возвращает значение
user199617,

1. Можно унаследовать CaptchaDialog от QDialog, чтобы не извращаться так;
2. Сигнал-слотовый механизм выполнен в старой семантике (используйте новую) типа "object.signal.connect(slot)";
3. Нет смысла использовать QDialog, если вы вызываете его показ через метод show . Используйте exec_(), который возвращает результат выполнения диалога из перечисления {Accepted, Rejected};
4. Вызов показа диалога в конструкторе -- не самая лучшая идея.

P.S. Не могу протестировать ваш код сейчас.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PyQT4 не возвращает значение / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]