2016-11-16 3 views
0

Я попытался установить некоторые строки с помощью QtGui.QLineEdit.setText() в конце программы и очистить строки, используя QtGui.QLineEdit.clear() в начале программы , Однако он никогда не очищает струны. Все, что я хочу сделать, это очистить содержимое в начале программы, чтобы указать, что он запущен, и в конце программы установить значения и статус программы. Есть ли какое-либо предложение или другой способ выполнить эту функцию? Большое спасибо.Python Pyqt QtGui.QLineEdit.clear()

Ниже мой код: (я опустил некоторые другие неродственные определения и функции)

def __init__(self): 
    self.left = QtGui.QFrame() 
    self.read_back_B0_to_B39 = QtGui.QTextEdit(self.left) 
    self.first_read_Value_error = QtGui.QLineEdit(self.left) 
    self.B0_B39_match = QtGui.QLineEdit(self.left) 

def first_burn_margin_read(self): 
    # try to clear the content 
    self.first_read_Value_error.clear() 
    self.read_back_B0_to_B39.clear() 
    self.B0_B39_match.clear() 

    # E3646 power supply setup 
    power_channel = 1; power_range = 'LOW'; power_voltage = 3.3; power_current = 0.3 
    self.power1_setup(power_channel, power_range, power_voltage, power_current) 
    self.power1_on_off(False) 
    self.power1_on_off(True) 

    # E3631 power supply setup 
    power_channel = 2; power_voltage = 7; power_current = 0.3 
    self.power2_setup(power_channel, power_voltage, power_current) 
    self.power2_on_off(False) 
    self.power2_on_off(True) 

    # 81130A setup 
    fun_channel = 1; fun_frequency = 100; fun_duty_cycle = 50; fun_vlow = 0; fun_vhigh = 0.8 
    self.fun_setup(fun_channel, fun_frequency, fun_duty_cycle, fun_vlow, fun_vhigh) 
    self.fun_on_off(fun_channel, 1) 
    time.sleep(1)   
    value = self.Byte0_to_Byte39.toPlainText() 
    write_value = []*40 
    for i in range(0,40): 
     hex_express = str(value[5*i:5*i+4]) 
     hex_int = int(hex_express, 16) 
     write_value.append(hex_int) 
    self.i2c_write(128, write_value) 
    time.sleep(2) 
    try: 
     burn_result = self.i2c_read(128, 40) 
     self.first_read_Value_error.setText('No') 
     if write_value[1:] == burn_result: 
      B46 = int(str(self.B46_OTP_start_address_1.text()), 16) 
      B47 = int(str(self.B47_OTP_stop_address_1.text()), 16) 
      B48 = int(str(self.B48_Ram_burn_start_address_1.text()), 16) 
      burn_registers = [B46, B47, B48] 
      self.i2c_write(174, burn_registers) 
      time.sleep(0.1) 
      # # Burn OTP 
      self.i2c_write(173, [0x8C]) 
      time.sleep(0.5) 
      self.i2c_write(173, [0x0C]) 
      time.sleep(0.5) 
      # Margin 1 read 
      self.i2c_write(128, [0x00]*40) 
      time.sleep(0.5) 
      self.i2c_write(177, [0x00]) 
      time.sleep(0.1) 
      self.i2c_write(173, [0x4C]) 
      time.sleep(0.1) 
      self.i2c_write(173, [0x0C]) 
      time.sleep(1) 
      margin_read = self.i2c_read(128, 40) 
      row1 = '' 
      row2 = '' 
      row3 = '' 
      row4 = '' 
      for i in range(0,10): 
       row1 += str(hex(margin_read[i])) + ' ' 
       row2 += str(hex(margin_read[i+10])) + ' ' 
       row3 += str(hex(margin_read[i+20])) + ' ' 
       row4 += str(hex(margin_read[i+30])) + ' ' 
      read_back = """%s 
      %s 
      %s 
      %s 
      """ % (row1, row2, row3, row4) 
      self.read_back_B0_to_B39.setText(read_back) 
      if write_value[1:] != margin_read: 
       self.log.warn('The burning is not correct. Please check the setup and do it again.') 
       self.B0_B39_match.setText('It is not matched.') 
      else: 
       self.log.info('1st pass burn and margin 1 read are successful, please go on.') 
       self.B0_B39_match.setText('It is matched.') 
     else: 
      self.log.warn('The burning is not correct. Please check the setup and do it again.') 
    except ValueError: 
     self.first_read_Value_error.setText('Yes') 
+0

Если 'first_burn_margin_read' вызывается из потока GUI (например, в ответ на нажатие кнопки), тогда GUI будет обновляться только после того, как метод вернется, поэтому при его запуске никаких изменений не будет GUI будет заблокирован. Вы должны прочитать [this] (http://doc.qt.io/qt-5/thread-basics.html), чтобы понять, как работает потоки в Qt. – mata

+0

Извините, что беспокою вас, и одна из моих других программ работает в этом методе. Поэтому я смущаюсь, есть ли у вас какие-либо предложения по достижению того, что я хочу сделать? Большое спасибо. – Dogod

+0

Долгосрочная функция, подобная этой, должна выполняться в отдельном потоке, и механизмы обновления сигналов/слотов Qts должны использоваться для обновления графического интерфейса, так как методы в классах виджета Qt не должны вызываться из отдельного потока. [эта ссылка] (http://doc.qt.io/qt-5/threads-technologies.html) содержит более подробный обзор доступных технологий потоковой обработки в Qt. – mata

ответ

-1

Try это также: self.first_read_Value_error.setText ('').

+0

Спасибо, я уже пробовал это, и это не сработало. – Dogod