[ Th3_Err0r Bypassed ]




Upload:

Command:

liwaavux@216.73.216.220: ~ $
from tkinter import *

class WidgetRedirector:

    """Support for redirecting arbitrary widget subcommands.

    Some Tk operations don't normally pass through Tkinter.  For example, if a
    character is inserted into a Text widget by pressing a key, a default Tk
    binding to the widget's 'insert' operation is activated, and the Tk library
    processes the insert without calling back into Tkinter.

    Although a binding to <Key> could be made via Tkinter, what we really want
    to do is to hook the Tk 'insert' operation itself.

    When a widget is instantiated, a Tcl command is created whose name is the
    same as the pathname widget._w.  This command is used to invoke the various
    widget operations, e.g. insert (for a Text widget). We are going to hook
    this command and provide a facility ('register') to intercept the widget
    operation.

    In IDLE, the function being registered provides access to the top of a
    Percolator chain.  At the bottom of the chain is a call to the original
    Tk widget operation.

    """
    def __init__(self, widget):
        self._operations = {}
        self.widget = widget            # widget instance
        self.tk = tk = widget.tk        # widget's root
        w = widget._w                   # widget's (full) Tk pathname
        self.orig = w + "_orig"
        # Rename the Tcl command within Tcl:
        tk.call("rename", w, self.orig)
        # Create a new Tcl command whose name is the widget's pathname, and
        # whose action is to dispatch on the operation passed to the widget:
        tk.createcommand(w, self.dispatch)

    def __repr__(self):
        return "WidgetRedirector(%s<%s>)" % (self.widget.__class__.__name__,
                                             self.widget._w)

    def close(self):
        for operation in list(self._operations):
            self.unregister(operation)
        widget = self.widget; del self.widget
        orig = self.orig; del self.orig
        tk = widget.tk
        w = widget._w
        tk.deletecommand(w)
        # restore the original widget Tcl command:
        tk.call("rename", orig, w)

    def register(self, operation, function):
        self._operations[operation] = function
        setattr(self.widget, operation, function)
        return OriginalCommand(self, operation)

    def unregister(self, operation):
        if operation in self._operations:
            function = self._operations[operation]
            del self._operations[operation]
            if hasattr(self.widget, operation):
                delattr(self.widget, operation)
            return function
        else:
            return None

    def dispatch(self, operation, *args):
        '''Callback from Tcl which runs when the widget is referenced.

        If an operation has been registered in self._operations, apply the
        associated function to the args passed into Tcl. Otherwise, pass the
        operation through to Tk via the original Tcl function.

        Note that if a registered function is called, the operation is not
        passed through to Tk.  Apply the function returned by self.register()
        to *args to accomplish that.  For an example, see ColorDelegator.py.

        '''
        m = self._operations.get(operation)
        try:
            if m:
                return m(*args)
            else:
                return self.tk.call((self.orig, operation) + args)
        except TclError:
            return ""


class OriginalCommand:

    def __init__(self, redir, operation):
        self.redir = redir
        self.operation = operation
        self.tk = redir.tk
        self.orig = redir.orig
        self.tk_call = self.tk.call
        self.orig_and_operation = (self.orig, self.operation)

    def __repr__(self):
        return "OriginalCommand(%r, %r)" % (self.redir, self.operation)

    def __call__(self, *args):
        return self.tk_call(self.orig_and_operation + args)


def main():
    root = Tk()
    root.wm_protocol("WM_DELETE_WINDOW", root.quit)
    text = Text()
    text.pack()
    text.focus_set()
    redir = WidgetRedirector(text)
    global previous_tcl_fcn
    def my_insert(*args):
        print("insert", args)
        previous_tcl_fcn(*args)
    previous_tcl_fcn = redir.register("insert", my_insert)
    root.mainloop()
    redir.unregister("insert")  # runs after first 'close window'
    redir.close()
    root.mainloop()
    root.destroy()

if __name__ == "__main__":
    main()

Filemanager

Name Type Size Permission Actions
Icons Folder 0755
__pycache__ Folder 0755
idle_test Folder 0755
AutoComplete.py File 8.87 KB 0644
AutoCompleteWindow.py File 17.26 KB 0644
AutoExpand.py File 2.42 KB 0644
Bindings.py File 3.35 KB 0644
CREDITS.txt File 1.82 KB 0644
CallTipWindow.py File 5.76 KB 0644
CallTips.py File 5.79 KB 0644
ChangeLog File 55.07 KB 0644
ClassBrowser.py File 6.22 KB 0644
CodeContext.py File 8.16 KB 0644
ColorDelegator.py File 10.22 KB 0644
Debugger.py File 15.98 KB 0644
Delegator.py File 665 B 0644
EditorWindow.py File 64.75 KB 0644
FileList.py File 3.72 KB 0644
FormatParagraph.py File 7 KB 0644
GrepDialog.py File 4.01 KB 0644
HISTORY.txt File 10.08 KB 0644
HyperParser.py File 10.31 KB 0644
IOBinding.py File 19.4 KB 0644
IdleHistory.py File 4.02 KB 0644
MultiCall.py File 17.12 KB 0644
MultiStatusBar.py File 783 B 0644
NEWS.txt File 33.61 KB 0644
ObjectBrowser.py File 3.66 KB 0644
OutputWindow.py File 4.29 KB 0644
ParenMatch.py File 6.47 KB 0644
PathBrowser.py File 2.81 KB 0644
Percolator.py File 2.6 KB 0644
PyParse.py File 18.96 KB 0644
PyShell.py File 56.52 KB 0755
README.txt File 2.44 KB 0644
RemoteDebugger.py File 11.75 KB 0644
RemoteObjectBrowser.py File 964 B 0644
ReplaceDialog.py File 5.69 KB 0644
RstripExtension.py File 1.03 KB 0644
ScriptBinding.py File 7.88 KB 0644
ScrolledList.py File 3.9 KB 0644
SearchDialog.py File 1.97 KB 0644
SearchDialogBase.py File 5.06 KB 0644
SearchEngine.py File 7.37 KB 0644
StackViewer.py File 3.48 KB 0644
TODO.txt File 8.28 KB 0644
ToolTip.py File 2.67 KB 0644
TreeWidget.py File 14.86 KB 0644
UndoDelegator.py File 10.06 KB 0644
WidgetRedirector.py File 4.37 KB 0644
WindowList.py File 2.41 KB 0644
ZoomHeight.py File 1.28 KB 0644
__init__.py File 37 B 0644
__main__.py File 109 B 0644
aboutDialog.py File 6.42 KB 0644
config-extensions.def File 2.72 KB 0644
config-highlight.def File 1.7 KB 0644
config-keys.def File 7.35 KB 0644
config-main.def File 2.46 KB 0644
configDialog.py File 51.61 KB 0644
configHandler.py File 28.64 KB 0644
configHelpSourceEdit.py File 6.57 KB 0644
configSectionNameDialog.py File 4.21 KB 0644
dynOptionMenuWidget.py File 1.28 KB 0644
extend.txt File 3.56 KB 0644
help.txt File 11.71 KB 0644
idle.py File 400 B 0644
idle.pyw File 671 B 0644
idlever.py File 23 B 0644
keybindingDialog.py File 12.14 KB 0644
macosxSupport.py File 7 KB 0644
rpc.py File 20.46 KB 0644
run.py File 13.37 KB 0644
tabbedpages.py File 17.74 KB 0644
textView.py File 3.46 KB 0644