Найти - Пользователи
Полная версия: Python, PyQt, классы. Вывод переменной
Начало » Python для новичков » Python, PyQt, классы. Вывод переменной
1
IrishkaZem
Здравствуйте! Подскажите, пожалуйста. Возник такой вопрос. В классе, в функции, отвечающей за ввод диалога переменной присваивается введённое значение. Но, получается, что это значение не записывается. Непонятно, почему. Можете подсказать? Программа рабочая, но некорректно выдаёт значения а и b

 from PyQt4 import QtCore, QtGui
import sys
class ModalWind(QtGui.QWidget):
    def __init__(self, parent=None):
        super(ModalWind, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint)
        self.setWindowModality(QtCore.Qt.WindowModal)
        self.setWindowTitle("Complete")
        self.resize(300, 100)
        self.lab = QtGui.QLabel('Данные введены!', self)
        butt_hide = QtGui.QPushButton('OK!')
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(butt_hide)
        self.setLayout(vbox)
        butt_hide.clicked.connect(self.close)
class MainWind(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainWind, self).__init__(parent)
        self.a = 0
        self.b = 0
        self.c = 1
        self.setWindowTitle('Выбор')
        self.setGeometry(500, 300, 350, 80)
        self.mainLayout = QtGui.QVBoxLayout(self)
        self.lab = QtGui.QLabel('Выберите', self)
        self.mainLayout.addWidget(self.lab)
        self.but1 = QtGui.QPushButton('1', self)
        self.but2 = QtGui.QPushButton('2', self)
        self.but3 = QtGui.QPushButton('3', self)
        self.mainLayout.addWidget(self.but1)
        self.mainLayout.addWidget(self.but2)
        self.mainLayout.addWidget(self.but3)
        self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.Dialog1)
        self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.close)
        self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.on_show)
        self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.Dialog2)
        self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.close)
        self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.on_show)
        self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.Dialog3)
        self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.close)
        self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.on_show)
    def Dialog1(self):
        self.a, ok = QtGui.QInputDialog.getInteger(self, '1', 'Введите')
        if ok:
            self.b, ok = QtGui.QInputDialog.getInteger(self, '1', 'Введите')
            self.c=1
    def Dialog2(self):
        self.a, ok = QtGui.QInputDialog.getInteger(self, '2', 'Введите')
        if ok:
            self.b, ok = QtGui.QInputDialog.getInteger(self, '2', 'Введите')
            self.c = 2
    def Dialog3(self):
        self.a, ok = QtGui.QInputDialog.getInteger(self, '3', 'Введите')
        if ok:
            self.b, ok = QtGui.QInputDialog.getInteger(self, '3', 'Введите')
            self.c = 3
    def on_show(self):
        win = ModalWind(self)
        win.show()
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    win = MainWind()
    win.show()
############################## беда здесь, не выводит введённое значение, а выводит изначальное, т.е. 0
    print(win.a)
    sys.exit(app.exec_())
FishHook
не могу понять логику происходящего
         self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.Dialog1)
        self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.close)
        self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.on_show)

Вообще, вы совершаете давно знакомую ошибку. Вы еще плохо знаете используемую библиотеку, так зачем вы сразу пишете большую портянку, а потом гадаете, в каком конкретно месте не работает? Сделайте очень маленькую формочку, до предела минимальную, положите на не одну кнопку, присобачте к ней один обработчик одного события и смотрите дебаггером, что происходит. Получилось? Идем дальше…
xkbd
Ты печатаешь переменную при старте программы, до ввода данных.
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