[Python-ideas] How the heck does async/await work in Python 3.5
Terry Reedy
tjreedy at udel.edu
Sat Feb 27 06:08:08 EST 2016
On 2/27/2016 4:42 AM, Maxime S wrote:
> 2016-02-27 9:08 GMT+01:00 Terry Reedy
> <tjreedy at udel.edu
> <mailto:tjreedy at udel.edu>>:
> It took me awhile to understand what you mean by 'tkapp'. Instances
> of tkinter.Tk get an undocumented .tk attribute that is an instance
> of the undocumented and hidden _tkinter class that is called 'tkapp'
> in printed representations. In other words, after
>
>
> I actually meant an instance of Tk(), which also have dooneevent().
> Sorry this wasn't clear.
I was fooled because in 3.x dooneevent does not show up on the root
completion list. 3.x Tk must have a __getattr__ that pulls attributes
from its tk (tkapp) attribute.
# 3.5.1
>>> import tkinter as tk
>>> root = tk.Tk()
>>> 'dooneevent' in tk.Tk.__dict__
False
>>> 'dooneevent' in root.__dict__
False
>>> root.dooneevent
<built-in method dooneevent of _tkinter.tkapp object at 0x00000210B2A64EB0>
For 2.x, dooneevent does appear as a completion, though I don't know how
or why, as I get the same False and False as above. (I will have to see
if the completion code changed, or if something else changed to change
its meaning.)
> import tkinter as tk
> root = tk.Tk()
> tkapp = root.tk <http://root.tk>
>
> tkapp has a dooneevent method. I found the tcl doc for it at
> https://www.tcl.tk/man/tcl/TclLib/DoOneEvent.htm
> Does calling it with DONT_WAIT "TCL_DONT_WAIT - Do not sleep:
> process only events that are ready at the time of the call." differ
> from calling root.update?
>
>
> Good point. The code under update() is essentially this (plus some error
> cheking):
>
> if (nargs == 1) {
> flags = TCL_DONT_WAIT;
> } else {
> flags = TCL_IDLE_EVENTS;
> }
>
> while (Tcl_DoOneEvent(flags) != 0) {}
Thanks for checking this.
> So, it is probably much more efficent to call update() than to do the
> same loop in python as I did, and it avoid messing around with _tkinter
> undocumented flags.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list