Python Pyqt QtGui.QLineEdit.clear()

Python Pyqt QtGui.QLineEdit.clear(),python,pyqt4,qlineedit,Python,Pyqt4,Qlineedit,我试图在程序结束时使用QtGui.QLineEdit.setText设置一些字符串,并在程序开始时使用QtGui.QLineEdit.clear清除这些字符串。但是,它从不清除字符串。我所要做的就是清除程序开始时的内容,以指示它正在运行,并在程序结束时设置程序的值和状态。是否有任何建议或其他方式来实现此功能?多谢各位 下面是我的代码:我省略了一些其他无关的定义和函数 def __init__(self): self.left = QtGui.QFrame() self.read_

我试图在程序结束时使用QtGui.QLineEdit.setText设置一些字符串,并在程序开始时使用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')
也可以尝试以下方法:
self.first\u read\u Value\u error.setText.

如果从GUI线程的whithin调用第一个\u burn\u margin\u read,例如响应按钮单击,则GUI将仅在方法返回后更新,因此在运行时不会看到任何更改,GUI将被阻止。您应该阅读以了解Qt中的线程是如何工作的。很抱歉打扰您,我的另一个程序就是用这种方法工作的。所以我很困惑,你有什么建议来实现我想做的吗?非常感谢。像这样的长时间运行的函数应该在单独的线程中运行,并且应该使用Qts信号/插槽机制来更新GUI,因为不应该从单独的线程调用Qt小部件类上的方法。对Qt中可用的线程技术有更详细的概述。