def __init__(self):
    QMainWindow.__init__(self,None)
    #Инициализация интерфейса Designer
    self.setupUi(self)
    self.bt_next.hide()
    self.bt_prev.hide()
    self.bt_multi.hide()
    self.progressBar.hide()
    #self.main_text.setReadOnly(True)
    #Соединяем сигналы и слоты
    self.connect(self.act_new_test,SIGNAL("triggered()"),self.onNewTest)

    #help
    self.connect(self.act_about,SIGNAL("triggered()"),self.onAbout)
    self.connect(self.act_about_qt,SIGNAL("triggered()"),qApp.aboutQt)


    #basic variables
    self.QuestionsCount=0
    self.CurrentQuestion=0
    self.state="NO_TEST"
    self.image=0
    self.zoom=1.0

    #preparing non-modal image dialog
    self.image_dialog=ImageDialog()

    #text data
    self.hello_text="hello_text"
    self.instruction_text="instruction"
    self.help_text="help"
    self.authors_text="authors"
    self.license_text="license"
class BasicTestWindow(QMainWindow,Ui_MainWindow):
  """Базовый класс окна тестов"""
  def __init__(self):
    QMainWindow.__init__(self,None)
    #Инициализация интерфейса Designer
    self.setupUi(self)
    self.bt_next.hide()
    self.bt_prev.hide()
    self.bt_multi.hide()
    self.progressBar.hide()
    #self.main_text.setReadOnly(True)
    #Соединяем сигналы и слоты
    self.connect(self.act_new_test,SIGNAL("triggered()"),self.onNewTest)

    #help
    self.connect(self.act_about,SIGNAL("triggered()"),self.onAbout)
    self.connect(self.act_about_qt,SIGNAL("triggered()"),qApp.aboutQt)


    #basic variables
    self.QuestionsCount=0
    self.CurrentQuestion=0
    self.state="NO_TEST"
    self.image=0
    self.zoom=1.0

    #preparing non-modal image dialog
    self.image_dialog=ImageDialog()

    #text data
    self.hello_text="hello_text"
    self.instruction_text="instruction"
    self.help_text="help"
    self.authors_text="authors"
    self.license_text="license"


  def setHelloText(self):
    """setting hello_text to main_text"""
    self.main_text.setHtml(self.hello_text)

  def onNewTest(self):
    """выбран пункт меню 'Начать тест'"""
    self.CurrentQuestion=0
    self.main_text.setHtml(self.instruction_text)
    self.state="NEW_STARTED"
    self.bt_multi.setText(QString.fromUtf8("Начать тестирование"))
    self.main_text.setHtml(self.instruction_text)
    self.bt_multi.show()

  def onMulti(self):
    if self.state=="NEW_STARTED":
      #настроить вид мульти-кнопки
      self.bt_multi.hide()
      self.bt_multi.setText(QString.fromUtf8("Завершить тест"))

      #Настроить счётчик
      self.progressBar.show()
      self.progressBar.setMinimum(0)
      self.progressBar.setMaximum(self.QuestionsCount)
      self.progressBar.setValue(self.CurrentQuestion+1)

      #настроить кнопки"вперёд-назад"
      self.bt_prev.show()
      self.bt_prev.setDisabled(True)
      self.bt_next.show()
      self.bt_next.setDisabled(True)
    elif self.state=="TEST_FINISHED":
      #настроить вид мульти-кнопки
      try:
        print 'image width='+str(self.image.width())
        print 'image height='+str(self.image.height())
        self.state="SHOW_PIC"
      except AttributeError:
        print 'no image, hiding button'
        self.bt_multi.hide()
      self.bt_multi.setText(QString.fromUtf8("Показать график"))
      self.bt_multi.setEnabled(True)

      #настроить кнопки"вперёд-назад"
      self.bt_prev.setDisabled(True)
      self.bt_next.setDisabled(True)

      #Настроить счётчик
      self.progressBar.hide()
    elif self.state=="SHOW_PIC":
      self.onShowPic()

  def onPrev(self):
    self.CurrentQuestion-=1
    self.bt_prev.setDisabled(True)
    self.bt_next.setEnabled(True)
    #self.progressBar.setValue(self.CurrentQuestion)

  def onNext(self):
    self.CurrentQuestion+=1
    self.bt_next.setDisabled(True)
    self.bt_prev.setEnabled(True)
    #self.progressBar.setValue(self.CurrentQuestion)


  def onShowPic(self):
    self.image_dialog.init(self.image)

  def onAbout(self):
    help=HelpDialog()
    help.setHelpText(self.help_text)
    help.setAuthorsText(self.authors_text)
    help.setLicenseText(self.license_text)
    help.exec_()