Я попытался установить некоторые строки с помощью 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')
Если 'first_burn_margin_read' вызывается из потока GUI (например, в ответ на нажатие кнопки), тогда GUI будет обновляться только после того, как метод вернется, поэтому при его запуске никаких изменений не будет GUI будет заблокирован. Вы должны прочитать [this] (http://doc.qt.io/qt-5/thread-basics.html), чтобы понять, как работает потоки в Qt. – mata
Извините, что беспокою вас, и одна из моих других программ работает в этом методе. Поэтому я смущаюсь, есть ли у вас какие-либо предложения по достижению того, что я хочу сделать? Большое спасибо. – Dogod
Долгосрочная функция, подобная этой, должна выполняться в отдельном потоке, и механизмы обновления сигналов/слотов Qts должны использоваться для обновления графического интерфейса, так как методы в классах виджета Qt не должны вызываться из отдельного потока. [эта ссылка] (http://doc.qt.io/qt-5/threads-technologies.html) содержит более подробный обзор доступных технологий потоковой обработки в Qt. – mata