On 6/11/2017 10:06 PM, jf...@ms4.hinet.net wrote:
I had donwload wdiget-tour-py3.tar.gz examples from this site:
http://www.hullsvle.ch/moodle/mod/resource/view.php?id=6697
and run one of its scripts canvasruler.py, I get stange result.

First, when I run it in the cmd box, although I get a message in the box,
but everything else is fine. The GUI works correctly.

     D:\Temp\widget-tour-py3>python canvasruler.py
     can't invoke "event" command: application has been destroyed
         while executing
     "event generate $w <<ThemeChanged>>"
         (procedure "ttk::ThemeChanged" line 6)
         invoked from within
     "ttk::ThemeChanged"

I have seen this too. It is not specific to any python/tkinter code, but is specific to exiting with some things destroyed and something not.
This must be coming from tcl or tk, not python or tkinter.

Second, I try to find out where is this message comes from. I insert
a statement "import pdb; pdb.set_trace()" at the source line 33:

     33 import pdb; pdb.set_trace()
     34 #
     35 # Note : to execute the Tk command, I need to create a Toplevel window
     36 # I guess I could use the toplevel create in widget.py, buth then this
     37 # module would not run stand-alone
     38 #
     39 temp = Tk()
     40 STIPPLE_BITMAP = temp.tk.eval(
     41      'image create bitmap @%s' % STIPPLE_BITMAP_FILE )
     42 ## Now I can delete the spurious window
     43 temp.destroy()
     44
     45
     46 TAB_NORMAL_STYLE = {'fill':'black', 'stipple':''}
     47 TAB_INRANGE_STYLE = {'fill':'green', 'stipple':''}
     48 TAB_OUTOFRANGE_STYLE = {'fill':'red', 'stipple':STIPPLE_BITMAP}
     49
     50
     51 class RulerCanvas (Canvas):

and run this script under interpreter, it stops at the point correctly and
I can step through to reach the line 51 without seeing that message appear.

     D:\Temp\widget-tour-py3>python
     Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 
bit (Intel)] on win32
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import canvasruler
     > d:\work\python\widget-tour-py3\canvasruler.py(39)<module>()
     -> temp = Tk()
     (Pdb) next
     > d:\work\python\widget-tour-py3\canvasruler.py(40)<module>()
     -> STIPPLE_BITMAP = temp.tk.eval(
     (Pdb) until 51
     > d:\work\python\widget-tour-py3\canvasruler.py(51)<module>()
     -> class RulerCanvas (Canvas):
     (Pdb)

Third, I moved the set_trace() to line 50 and run again. This time I saw that 
message appears in the cmd box.

     D:\Temp\widget-tour-py3>python
     Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 
bit (Intel)] on win32
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import canvasruler
     > d:\work\python\widget-tour-py3\canvasruler.py(51)<module>()
     -> class RulerCanvas (Canvas):
     (Pdb) can't invoke "event" command: application has been destroyed
          while executing
     "event generate $w <<ThemeChanged>>"
         (procedure "ttk::ThemeChanged" line 6)
         invoked from within
     "ttk::ThemeChanged"

     (Pdb) list
      46     TAB_NORMAL_STYLE = {'fill':'black', 'stipple':''}
      47     TAB_INRANGE_STYLE = {'fill':'green', 'stipple':''}
      48     TAB_OUTOFRANGE_STYLE = {'fill':'red', 'stipple':STIPPLE_BITMAP}
      49
      50     import pdb; pdb.set_trace()
      51  -> class RulerCanvas (Canvas):
      52
      53         def __init__(self, master ):
      54             Canvas.__init__(self, master, width=200+RULER_LENGTH, 
height=100 )
      55             self.draw_ruler()
      56             self.draw_well()
     (Pdb)

My problem is why the difference? and how to find out where that message comes 
from?

PS. I also run this test under a Win8.1/64bit machine, get the same result.
PSS. I had scan files in the whole example directory and found there is
      no any file using ttk module.

Right. I got this with IDLE tests before using ttk. Good luck tracing this to its origin.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to