本文整理汇总了Python中idlelib.WidgetRedirector.WidgetRedirector.register方法的典型用法代码示例。如果您正苦于以下问题:Python WidgetRedirector.register方法的具体用法?Python WidgetRedirector.register怎么用?Python WidgetRedirector.register使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idlelib.WidgetRedirector.WidgetRedirector
的用法示例。
在下文中一共展示了WidgetRedirector.register方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(Text):
def __init__(self, *args, **kwargs):
Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = \
self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = \
self.redirector.register("delete", lambda *args, **kw: "break")
示例2: ReadOnlyEntry
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyEntry(Entry):
def __init__(self, *args, **kwargs):
Entry.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register(
"insert", lambda *args, **kw: "break")
self.delete = self.redirector.register(
"delete", lambda *args, **kw: "break")
示例3: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(tkinter.Text):
def __init__(self, *args, **kwargs):
from idlelib.WidgetRedirector import WidgetRedirector
tkinter.Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = \
self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = \
self.redirector.register("delete", lambda *args, **kw: "break")
示例4: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(Tkinter.Text):
"""Sets up a read-only chat box that can be added to with the
Text.insert method, but cannot be modified by the user because
all the input is rerouted"""
def __init__(self, *args, **kwargs):
Tkinter.Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register(
"insert", lambda *args, **kw: "break")
self.delete = self.redirector.register(
"delete", lambda *args, **kw: "break")
示例5: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(tk.Text):
def __init__(self, *args, **kwargs):
kwargs['relief'] = tk.FLAT
kwargs['insertwidth'] = 0
kwargs['highlightthickness'] = 0
tk.Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = \
self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = \
self.redirector.register("delete", lambda *args, **kw: "break")
示例6: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(Text):
def __init__(self, master=None, cnf={}, **kw):
super().__init__(master, cnf, **kw)
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = self.redirector.register("delete", lambda *args, **kw: "break")
示例7: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(ScrolledText):
def __init__(self, *args, **kwargs):
ScrolledText.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = self.redirector.register("delete", lambda *args, **kw: "break")
self.config(wrap=tk.WORD)
示例8: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(Text):
"""
Prevent keys from being shown in the text area.
We want to control what is actualxpyl presented to the user.
"""
def __init__(self, *args, **kwargs):
"""
Trashes every attempt to modify the text area coming from
user input.
"""
Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = \
self.redirector.register("insert",
lambda *args, **kw: "break")
self.delete = \
self.redirector.register("delete",
lambda *args, **kw: "break")
示例9: __init__
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class Percolator:
def __init__(self, text):
self.text = text
self.redir = WidgetRedirector(text)
self.top = self.bottom = Delegator(text)
self.bottom.insert = self.redir.register('insert', self.insert)
self.bottom.delete = self.redir.register('delete', self.delete)
self.filters = []
def close(self):
while self.top is not self.bottom:
self.removefilter(self.top)
self.top = None
self.bottom.setdelegate(None)
self.bottom = None
self.redir.close()
self.redir = None
self.text = None
return
def insert(self, index, chars, tags = None):
self.top.insert(index, chars, tags)
def delete(self, index1, index2 = None):
self.top.delete(index1, index2)
def insertfilter(self, filter):
raise isinstance(filter, Delegator) or AssertionError
raise filter.delegate is None or AssertionError
filter.setdelegate(self.top)
self.top = filter
return
def removefilter(self, filter):
if not isinstance(filter, Delegator):
raise AssertionError
raise filter.delegate is not None or AssertionError
f = self.top
self.top = f is filter and filter.delegate
filter.setdelegate(None)
else:
while not (f.delegate is not filter and f is not self.bottom):
raise AssertionError
f.resetcache()
f = f.delegate
f.setdelegate(filter.delegate)
filter.setdelegate(None)
return
示例10: __init__
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class Percolator:
def __init__(self, text):
# XXX would be nice to inherit from Delegator
self.text = text
self.redir = WidgetRedirector(text)
self.top = self.bottom = Delegator(text)
self.bottom.insert = self.redir.register("insert", self.insert)
self.bottom.delete = self.redir.register("delete", self.delete)
self.filters = []
def close(self):
while self.top is not self.bottom:
self.removefilter(self.top)
self.top = None
self.bottom.setdelegate(None)
self.bottom = None
self.redir.close()
self.redir = None
self.text = None
def insert(self, index, chars, tags=None):
# Could go away if inheriting from Delegator
self.top.insert(index, chars, tags)
def delete(self, index1, index2=None):
# Could go away if inheriting from Delegator
self.top.delete(index1, index2)
def insertfilter(self, filter):
# Perhaps rename to pushfilter()?
assert isinstance(filter, Delegator)
assert filter.delegate is None
filter.setdelegate(self.top)
self.top = filter
def removefilter(self, filter):
# XXX Perhaps should only support popfilter()?
assert isinstance(filter, Delegator)
assert filter.delegate is not None
f = self.top
if f is filter:
self.top = filter.delegate
filter.setdelegate(None)
else:
while f.delegate is not filter:
assert f is not self.bottom
f.resetcache()
f = f.delegate
f.setdelegate(filter.delegate)
filter.setdelegate(None)
示例11: ReadOnlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ReadOnlyText(Text):
"""A Text widget that redirects the insert and delete
handlers so that they are no-ops. This effectively makes
the widget readonly with respect to keyboard input handlers.
Adapted from http://tkinter.unpythonic.net/wiki/ReadOnlyText, which
is itself adapting a solution described here: http://wiki.tcl.tk/1152
"""
def __init__(self, *args, **kwargs):
Text.__init__(self, *args, **kwargs)
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register("insert", tk_break)
self.delete = self.redirector.register("delete", tk_break)
示例12: ThreadSafeConsole
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ThreadSafeConsole(ScrolledText):
"""A thread-safe, read-only, scrolling text widget."""
def __init__(self, *args, **kwargs):
tk.Text.__init__(self, *args, **kwargs)
self.tag_config("ok", foreground="forest green")
self.tag_config("error", foreground="red")
self.redir = WidgetRedirector(self)
self.insert = self.redir.register("insert", lambda *args, **kw: "break")
self.delete = self.redir.register("delete", lambda *args, **kw: "break")
self.queue = queue.Queue()
self.update()
def write(self, line): # pragma: no cover
self.queue.put(line)
def clear(self): # pragma: no cover
self.queue.put(None)
def update(self): # pragma: no cover
try:
while True:
line = self.queue.get_nowait()
if line is None:
self.delete(1.0, tk.END)
else:
parts = line.split("...")
self.insert(tk.END, str(parts[0]))
if len(parts) > 1:
suffix = str(parts[1])
self.insert(tk.END, "...")
if suffix.endswith("OK"):
suffix = suffix.replace("OK", "")
self.insert(tk.END, suffix)
self.insert(tk.END, "OK", ("ok"))
elif suffix.startswith("ERROR"):
suffix = suffix.replace("ERROR", "")
self.insert(tk.END, "ERROR", ("error"))
self.insert(tk.END, suffix)
else:
self.insert(tk.END, suffix)
self.insert(tk.END, "\n")
self.see(tk.END)
self.update_idletasks()
except queue.Empty:
pass
self.after(100, self.update)
示例13: ScrolledTextReadOnly
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class ScrolledTextReadOnly(ScrolledText):
def __init__(self, *args, **kwargs):
ScrolledText.__init__(self, *args, **kwargs)
_rc_menu_install(self)
# overwrite default class binding so we don't need to return "break"
self.bind_class("Text", "<Control-a>", self.event_select_all)
self.bind("<Button-3><ButtonRelease-3>", self.show_menu)
# Make the widget ready only
self.redirector = WidgetRedirector(self)
self.insert = self.redirector.register("insert", lambda *args, **kw: "break")
self.delete = self.redirector.register("delete", lambda *args, **kw: "break")
def event_select_all(self, *args):
self.focus_force()
self.tag_add("sel","1.0","end")
def show_menu(self, e):
self.tk.call("tk_popup", self.menu, e.x_root, e.y_root)
示例14: PRReadonlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class PRReadonlyText(PRText):
def __init__(self, *args, **kwargs):
PRText.__init__(self, *args, **kwargs)
self._insert = self.insert
self._delete = self.delete
self._redirector = WidgetRedirector(self)
self.readonly = True
def _setup_menu(self, master, editable=False):
super(PRReadonlyText, self)._setup_menu(master, editable=False)
def clear(self):
self.readonly = False
self._delete(1.0, tk.END)
self.readonly = True
@property
def readonly(self):
return self._readonly
@readonly.setter
def readonly(self, value):
_break_func = lambda *args, **kw: 'break'
if value:
self.insert = self._redirector.register('insert', _break_func)
self.delete = self._redirector.register('delete', _break_func)
else:
self.insert = self._redirector.unregister('insert')
self.delete = self._redirector.unregister('delete')
self._readonly = value
@property
def text(self):
return self.get(0.0, tk.END)
@text.setter
def text(self, value):
self.readonly = False
self._delete(0.0, tk.END)
self._insert(0.0, value)
self.readonly = True
示例15: WidgetRedirectorTest
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import register [as 别名]
class WidgetRedirectorTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
requires('gui')
cls.root = Tk()
cls.text = Text(cls.root)
@classmethod
def tearDownClass(cls):
del cls.text
cls.root.update_idletasks()
cls.root.destroy()
del cls.root
def setUp(self):
self.redir = WidgetRedirector(self.text)
self.func = Func()
self.orig_insert = self.redir.register('insert', self.func)
self.text.insert('insert', 'asdf') # leaves self.text empty
def tearDown(self):
self.text.delete('1.0', 'end')
self.redir.close()
def test_repr(self): # partly for 100% coverage
self.assertIn('Redirector', repr(self.redir))
self.assertIn('Original', repr(self.orig_insert))
def test_register(self):
self.assertEqual(self.text.get('1.0', 'end'), '\n')
self.assertEqual(self.func.args, ('insert', 'asdf'))
self.assertIn('insert', self.redir._operations)
self.assertIn('insert', self.text.__dict__)
self.assertEqual(self.text.insert, self.func)
def test_original_command(self):
self.assertEqual(self.orig_insert.operation, 'insert')
self.assertEqual(self.orig_insert.tk_call, self.text.tk.call)
self.orig_insert('insert', 'asdf')
self.assertEqual(self.text.get('1.0', 'end'), 'asdf\n')
def test_unregister(self):
self.assertIsNone(self.redir.unregister('invalid operation name'))
self.assertEqual(self.redir.unregister('insert'), self.func)
self.assertNotIn('insert', self.redir._operations)
self.assertNotIn('insert', self.text.__dict__)
def test_unregister_no_attribute(self):
del self.text.insert
self.assertEqual(self.redir.unregister('insert'), self.func)
def test_dispatch_intercept(self):
self.func.__init__(True)
self.assertTrue(self.redir.dispatch('insert', False))
self.assertFalse(self.func.args[0])
def test_dispatch_bypass(self):
self.orig_insert('insert', 'asdf')
# tk.call returns '' where Python would return None
self.assertEqual(self.redir.dispatch('delete', '1.0', 'end'), '')
self.assertEqual(self.text.get('1.0', 'end'), '\n')
def test_dispatch_error(self):
self.func.__init__(TclError())
self.assertEqual(self.redir.dispatch('insert', False), '')
self.assertEqual(self.redir.dispatch('invalid'), '')
def test_command_dispatch(self):
# Test that .__init__ causes redirection of tk calls
# through redir.dispatch
self.root.call(self.text._w, 'insert', 'hello')
self.assertEqual(self.func.args, ('hello',))
self.assertEqual(self.text.get('1.0', 'end'), '\n')
# Ensure that called through redir .dispatch and not through
# self.text.insert by having mock raise TclError.
self.func.__init__(TclError())
self.assertEqual(self.root.call(self.text._w, 'insert', 'boo'), '')