[Tutor] threading problem in GUI

Jacob S. keridee at jayco.net
Sat Sep 17 03:18:54 CEST 2005


> Hello there !
> i am having a problem with threading.
> OK, i have this GUI app that i am building with pygtk.
> there is a process (four actually, just working on getting one right now)
> that needs to run in the background.
> there is a button that starts the background function. But, it locks up
> the gui. it doesn't run in the background, it locks everything up. It
> still runs though.
> one of the things this background process is to do is updata a viewable
> area on the GUI. Now when run from a terminal, when i hit CTRL+C
> it stops the thread, but doesnt kill the GUI, and the TextView gets
> updated right then with everything it should have gotten before.
>
>
> def Serial1():
>            print 'running serial 1'
>            ser = serial.Serial('/dev/ttyS15', 2400, timeout=None)
>            loopy = 1
>            i = 1
>            while loopy < 5:
>                x_Now = strftime('%Y-%m-%d %H:%M:%S')
>                i = i + 1
>                a = ser.read(1)#read one byte
>                a = ord(a) # change byte to integer
>                if (a < 64 )or (a > 127):
>                    continue
>                b = ser.read(1)
>                b = ord(b)
>                if (b < 64 )or (b > 127):
>                    continue
>                c = ser.read(1)
>                c = ord(c)
>                if c < 92:
>                    continue
>                d = ser.read(1)
>                d = ord(d)
>                if d < 128:
>                    continue
>                Sensor_ID = (a & 63) + (b & 63) * 64 + (c & 1) * 4096
>                Status = (c & 62) / 2 + (d & 63) * 32
>                c = int(c)
>                d = int(d)
>                x_Now = strftime('%Y-%m-%d %H:%M:%S')
>                f = open('/home/piv/PivData/tmp/Serial/'+str(i), 'w')
>                Input1Data =
> str(Sensor_ID)+'\t'+str(Status)+'\t--------->\t'+x_Now+'\n'
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Okay, it's time for you to learn % formatting and fix this line.
Read this.

http://www.python.org/doc/2.4.1/lib/typesseq-strings.html#l2h-211

Okay, need help? Ask.
(I don't mean to be blunt, but that line is teetering on the edge of 
atrocious.)

>                Input1Iter = self.Input1Buffer.get_end_iter()
>                self.Input1Buffer.insert(Input1Iter,
> Input1Data)
>
> f.write(str(Sensor_ID)+'\n'+str(c)+'\n'+str(d)+'\n'+str(Status)+'\n'+x_Now)

Ah. The above line here should meet the same fate. It's atrocious too.

HTH,

Jacob


>                f.close()
>        thread.start_new(Serial1())
>
> the code may not be best form, i am still fairly new at this. so i am
> also open to
> any constructive critisism.



More information about the Tutor mailing list