sys.exit call from pythonw.exe gives error

2005-10-27 Thread Jo Schambach
I wrote a python GUI with tkInter and installed it on a windows machine
with the .pyw extension, so it will be executed from pythonw.exe instead
of python.exe, since I didn't want the console window to appear.
My application exits with a call to sys.exit. However, when this call is
executed under pythonw.exe I get an error popup window with the
following messeage:

 start quote 
Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C:\Python24\pythonw.exe

This application has requested the Runtime to terminate in an unusual way.
Please contact the application support team for more information
 end quote 

What am I doint wrong here?

Jo



-- 
Dr Joachim Schambach
The University of Texas at Austin
Department of Physics
1 University Station C1600
Austin, Texas 78712-0264, USA
Phone: (512) 471-1303; FAX: (814) 295-5111
e-mail: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


array of Tkinter variables?

2005-11-01 Thread Jo Schambach
I want to build an array of entry widgets in python with Tkinter that
all have similar textvariables. I was hoping that I could use an array
of StringVar variables to attach to these widgets, so that I can loop
through the widget creation. But my simple minded approach failed:

for i in range(32):
self.dllAdjust[i] = StringVar()
self.dllAdjust[i].set('000')

gives me the following error:

  File "./config.py", line 787, in setDefaultVals
self.dllAdjust[i] = StringVar()
AttributeError: Configurator instance has no attribute 'dllAdjust'


("Configurator" is the class in which this code fragment appears)

How does one define an array of StringVar? If that is not possible, what
would be an alternative approach to the idea in the  code fragment above?

Jo
-- 
Dr Joachim Schambach
The University of Texas at Austin
Department of Physics
1 University Station C1600
Austin, Texas 78712-0264, USA
Phone: (512) 471-1303; FAX: (814) 295-5111
e-mail: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


how do i use "tkinter.createfilehandler" with a regular c program?

2005-11-14 Thread Jo Schambach
I am trying to write a GUI with tkinter that displays the stdout from a
regular C/C++ program in a text widget.
The idea i was trying to use was as follows:

1) use "popen" to execute the C/C++ program
2) then use "tkinter.createfilehandler" to create a callback that  would
be called when the C/C++ program creates output on stdout.

Somehow, I can't get this to  work. here is what I have tried so  far:

import sys,os
from Tkinter import *

root = Tk()
mainFrame = Frame(root)
textBox = Text(mainFrame)
textBox.pack(fill=BOTH, expand=YES)
mainFrame.pack(fill=BOTH, expand=YES)

fh = os.popen('/homes/jschamba/tof/pcan/pcanloop')

def readfh(filehandle, stateMask):
global textBox
newText = filehandle.read()
textBox.insert(END, newText)

tkinter.createfilehandler(fh, tkinter.READABLE, readfh)
root.mainloop()


I don't see any of the stdout from my program appear in the textbox.

Does anyone have a short example that I could use as an inspiration for
this task?

I guess what my ultimate goal would be is to create something similar to
the "expectk" call "expect_background", which does exactly what i just
described, i.e. wait for output from a shell/C/C++ program and then do
something in response to this output like insert it into a text widget.
In expect, the following program seems to work:

#!/usr/bin/expectk -f

# disable terminal output
log_user 0

spawn -noecho /homes/jschamba/tof/pcan/pcanloop
set shell $spawn_id
text .shell -relief sunken -bd 1 -width 90 -height 24 -yscrollcommand
{.scroll set}
scrollbar .scroll -command {.shell yview}
pack .scroll -side right -fill y
pack .shell -side bottom -expand true -fill both

expect_background {
-i $shell -re "\[^\x0d]+" {
.shell insert end $expect_out(0,string)
.shell yview -pickplace insert
}
}


Jo
-- 
Dr Joachim Schambach
The University of Texas at Austin
Department of Physics
1 University Station C1600
Austin, Texas 78712-0264, USA
Phone: (512) 471-1303; FAX: (814) 295-5111
e-mail: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how do i use "tkinter.createfilehandler" with a regular c program?

2005-11-14 Thread Jo Schambach
Thanks, that seems to work.
maybe one more question on this subject:

how can i use the callback function to the "createfilehandler" call from
within a class?
in other words, what would be the signature of the callback function, if
 I made it a member of a class?
The documentation says that the callback is called with the arguments:
callback(filehandle, stateMask)
but a class member function always has the "self" argument as is first
argument. So would the syntax be:

class GUI:
def __init__:
.

def filehandlerCallback(self, filehandle, stateMask):



Jo
[EMAIL PROTECTED] wrote:
> Compared to your program, I
>  * Made sure that the slave program actually flushed its stdout buffers
>  * didn't call read(), which will by default continue reading until
>it reaches EOF, not merely read the available data
> 
> #!/usr/bin/env python
> import sys, time, Tkinter, itertools, _tkinter, os
> 
> if '-slave' in sys.argv:
> for i in itertools.count():
> time.sleep(1)
> print "This is a line of output:", i
> sys.stdout.flush()
> raise SystemExit
> 
> root = Tkinter.Tk()
> root.wm_withdraw()
> 
> fh = os.popen('%s -slave' % sys.argv[0])
> 
> def reader(*args):
> line = fh.readline()
> if not line:
> print "EOF from slave"
> raise SystemExit
> print "from slave: %r" % line
> 
> _tkinter.createfilehandler(fh, Tkinter.READABLE, reader)
> root.mainloop()


-- 
Dr Joachim Schambach
The University of Texas at Austin
Department of Physics
1 University Station C1600
Austin, Texas 78712-0264, USA
Phone: (512) 471-1303; FAX: (814) 295-5111
e-mail: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list