Who's on First, IDLE or pythonWin? Dialog Problem?

W. eWatson notvalid2 at sbcglobal.net
Wed Feb 11 18:28:44 EST 2009


Mike Driscoll wrote:
> On Feb 11, 3:27 pm, "W. eWatson" <notval... at sbcglobal.net> wrote:
>> Steve Holden wrote:
>>> W. eWatson wrote:
>>>> Steve Holden wrote:
>>>>> W. eWatson wrote:
>>>>>> My program in IDLE bombed with:
>>>>>> ==============
>>>>>> Exception in Tkinter callback
>>>>>> Traceback (most recent call last):
>>>>>>   File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
>>>>>>     return self.func(*args)
>>>>>>   File
>>>>>> "C:\Sandia_Meteors\New_Sentinel_Development\Sentuser_Utilities_Related\sentuser\sentuserNC25-Dev4.py",
>>>>>> line 552, in OperationalSettings
>>>>>>     dialog = OperationalSettingsDialog( self.master, set_loc_dict )
>>>>>>   File
>>>>>> "C:\Sandia_Meteors\New_Sentinel_Development\Sentuser_Utilities_Related\sentuser\sentuserNC25-Dev4.py",
>>>>>> line 81, in __init__
>>>>>>     tkSimpleDialog.Dialog.__init__(self, parent)
>>>>>>   File "C:\Python25\lib\lib-tk\tkSimpleDialog.py", line 69, in __init__
>>>>>>     self.wait_visibility() # window needs to be visible for the grab
>>>>>>   File "C:\Python25\lib\lib-tk\Tkinter.py", line 415, in wait_visibility
>>>>>>     self.tk.call('tkwait', 'visibility', window._w)
>>>>>> TclError: window ".34672232" was deleted before its visibility changed
>>>>>> ===============
>>>>>> It runs fine in pythonWin performing the same entry operation. Open a
>>>>>> menu,  select an item to open a dialog, select a select button in the
>>>>>> dialog, press OK to leave the dialog. Boom, as above.
>>>>>> (This does not mean pythonWin doesn't have problems of its own. ) If I
>>>>>> just execute the code (double click on the py file, the console shows no
>>>>>> problems. IDLE is unhappy.
>>>>>> Another side to this is that I use WinMerge to find differences between
>>>>>> my last saved copy and the current copy. I found the current copy had
>>>>>> two lines where a abc.get() was changed to abc.get. This was undoubtedly
>>>>>> from briefly using the pyWin editor, when I mis-hit some keys. Yet pyWin
>>>>>> had no trouble executing the program. My guess is that while briefly
>>>>>> editing there, I hit some odd combination of keys that produced,
>>>>>> perhaps, an invisible character that pyWin ignores.
>>>>>> Not the 34672232 window is a dialog that I closed by pressing OK. I
>>>>>> would again guess, that, if there is a problem, it occurs in the code
>>>>>> that destroys the dialog.
>>>>> Well you have to remember that you are trying to run a windowed GUI
>>>>> under the control of another windows GUI, so it isn't surprising that
>>>>> you hit trouble.
>>>>> With IDLE the issue will be that IDLE already created a main window
>>>>> before your program started running. With PythonWin you are using two
>>>>> different toolkits, so it isn't really surprising that breaks down -
>>>>> there will be two entirely separate main loops competing with each other.
>>>> Not quite. I take down IDLE when I run pyWin, and vice versa.
>>> The two separate loops being PyWin (which uses MFC) and your program
>>> (which uses Tkinter). You just can't mix GUIs in the same process like
>>> that, sorry.
>>> regards
>>>  Stedve
>> I have no idea what MFC is or how it relates to Tkinter. Neither IDLE and
>> pyWin are being run together.
>>
>> Assume neither is running.
>> a. run IDLE, and execute program
>> b. close IDLE script, and interactive window. Kill py program
>> result: boom
>> c. run pyWin and execute program
>> d. do same as b for pyWin
>> resulst: all OK
>> e. repeat a and b.
>> Result: boom
>>
>> Repeat the above and you get the same results.
>>
>> I had running IDLE successfully w/o using Pywin, and IDLE goofed, as above.
>> I switched to it to see if it work there. It did. I double clicked on the py
>> file, and it worked fine. Can you explain this?
>>
>> --
>>                                 W. eWatson
>>
>>               (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time)
>>                Obz Site:  39° 15' 7" N, 121° 2' 32" W, 2700 feet
>>
>>                      Web Page: <www.speckledwithstars.net/>
> 
> What Steve (and I) are saying is that IDLE has it's own mainloop and
> your program has a mainloop too as it sounds like it is running a
> Tkinter app. Sometimes when you run a Tk app from another Tk app, the
> two mainloops clash and have weird issue like this one.
> 
> If you just double-click it or run it from the command line, you only
> have one mainloop (i.e. the one that's part of your app). Thus, no
> conflicts.
> 
> Mike
So, how do I get rid of it? reboot?

-- 
                                W. eWatson

              (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time)
               Obz Site:  39° 15' 7" N, 121° 2' 32" W, 2700 feet

                     Web Page: <www.speckledwithstars.net/>




More information about the Python-list mailing list