powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PyQT4 не возвращает значение
3 сообщений из 3, страница 1 из 1
PyQT4 не возвращает значение
    #38733503
user199617
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
PyQT4 не возвращает значение
    #38733504
user199617
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user199617, ужасная подсветка у вас на сайте
pastebin.com/Q3BBSm8g на пастебине получше выглядит
...
Рейтинг: 0 / 0
PyQT4 не возвращает значение
    #38733530
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user199617,

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

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


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