本文整理汇总了Python中idlelib.WidgetRedirector.WidgetRedirector.unregister方法的典型用法代码示例。如果您正苦于以下问题:Python WidgetRedirector.unregister方法的具体用法?Python WidgetRedirector.unregister怎么用?Python WidgetRedirector.unregister使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idlelib.WidgetRedirector.WidgetRedirector
的用法示例。
在下文中一共展示了WidgetRedirector.unregister方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PRReadonlyText
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import unregister [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
示例2: WidgetRedirectorTest
# 需要导入模块: from idlelib.WidgetRedirector import WidgetRedirector [as 别名]
# 或者: from idlelib.WidgetRedirector.WidgetRedirector import unregister [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'), '')