Здравствуйте! Подскажите, пожалуйста. Возник такой вопрос. В классе, в функции, отвечающей за ввод диалога переменной присваивается введённое значение. Но, получается, что это значение не записывается. Непонятно, почему. Можете подсказать? Программа рабочая, но некорректно выдаёт значения а и 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_())