[Tutor] Fwd: Re: Need Help Modifying a wxPython GUI (scrolling display and logging)

Dave Angel davea at davea.name
Fri Jun 14 21:14:48 CEST 2013


On 06/14/2013 10:48 AM, Matt D wrote:
> Hey,
> here is a snip of my code.
>
> #logger code----------------------------------------------
> 		#  first new line
> 		#self.logfile.write('\n')
> 		#  date and time
> 		#self.logfile.write('%s,'%(str(strftime("%Y-%m-%d %H:%M:%S", gmtime()))))
> 		#  blah = [time, 'nac', 'tgid', 'source', 'dest', 'algid'] is what we want
> 		tmplist = []
> 		tmplist.append(str(strftime("%Y-%m-%d %H:%M:%S", localtime())))
> 		tmplist.append(field_values["nac"])
> 		tmplist.append(field_values["tgid"])
> 		tmplist.append(field_values["source"])
> 		tmplist.append(field_values["dest"])
> 		tmplist.append(field_values["algid"])
>

tmplist is an unnecessary complication.  Did you look at my sample loop, 
which I'll repeat here with a correction:


         for k in FIELD_LIST_NAMES:
             #  get the value of the current TextCtrl field
             f = field_values.get(k, None)
             if not f is None:
                 #output the value with trailing comma
                 self.logfile.write('%s,'%(str(f)))
             else:
                 self.logfile.write(",")
         self.logfile.write("\n")

This code preserves your original feature of not crashing when the C++ 
program fails to fill in all your expected keys. It also makes sure 
there will be unadorned commas for missing fields, making it possible 
for a spreadsheet to read the columns correctly.

If you want to populate a list first, by all means do so, but do it in a 
loop, using the FIELD_LIST_NAMES as keys.

One thing I didn't handle was the date field.  I'd do that by adding it 
to the field_values dict, or to a copy of it. That way, it's all 
consistent, even though one field comes from local and the rest from the 
pickle.


>


-- 
DaveA


More information about the Tutor mailing list