sys.exit call from pythonw.exe gives error
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?
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?
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?
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