奇怪的行为 - wxPython事件

时间:2016-12-15 17:00:46

标签: python wxpython

我有以下这段代码。它有时是工作,不是其他时间。

   def OnReset(self, event):

    self.reset_pump.Disable() # Disables the button so it is clicked
    self.WriteToController([0x30],'GuiMsgIn') # Sends the reset command
    self.flag_read.set()
    self.tr.join()
    time.sleep(2)
    start = time.time()
    self.offset_text_control.Clear()
    print "Helloin reset"
    self.gain_text_control.Clear()
    self.firmware_version_text_control.Clear()
    self.pump_rpm_text_control.Clear()
    self.pressure_text_control.Clear()
    self.last_error_text_control.Clear()
    self.error_count_text_control.Clear()
    self.pump_model_text_control.Clear()
    self.pump_serial_number_text_control.Clear()
    self.on_time_text_control.Clear()
    self.job_on_time_text_control.Clear()

    #self.MessageBox('Pump RESET going on Click OK \n')
    # Having the above step is useful
    print time.time() - start
    #self.ser.close()
    wx.CallLater(3000, self.CalledAfter, [event,])

def CalledAfter(self, event):
    self.tr = threading.Thread(target=ReadData, name="ReadThread", args=(self.ser, self.flag_read))
    self.tr.daemon = True
    self.tr.start()
    self.reset_pump.Enable()

它的作用当我单击GUI上的Reset按钮时,它必须清除GUI上的某些文本字段。只有在加入self.tr线程后才必须清除它。

一旦清除,它将执行命令wx.CallLater(3000,self.CalledAfter,[event,])。然后再次启动一个新线程。

显然.Clear()命令工作在非一致的级别,它正在工作一段时间,其他时间不工作,再次工作。

任何想法为什么会发生这种情况会非常有帮助。

1 个答案:

答案 0 :(得分:0)

SetValue和Clear更新窗口的方式似乎有所不同。调用select first 1 fix, var, costcenter_id from fixvar where costtype_id=7 and 2017 between extract(year from ct_from) and extract(year from ct_to) and costcenter_id in (-1, 10) order by costcenter_id desc 似乎是解决此问题的合适方法。