entry.xml 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <class name="Entry">
  2. <relationships>
  3. <association name="parent" class="A"/>
  4. </relationships>
  5. <method name="construct_strvar">
  6. <parameter name="parent"/>
  7. <parameter name="value"/>
  8. <body>
  9. self.strvar = tk.StringVar(parent)
  10. self.strvar.set(value)
  11. self.strvar.trace('w', lambda a, b, c: self.controller.addInput(Event("change_entry", "input", [id(self), self.strvar.get()])))
  12. return self.strvar
  13. </body>
  14. </method>
  15. <constructor>
  16. <parameter name="constructor_parameters" type='dict' default='{}' />
  17. <body>
  18. self.name = constructor_parameters['name']
  19. self.entry = tk.Entry(constructor_parameters['parent'], textvariable=self.construct_strvar(constructor_parameters['parent'], constructor_parameters['value']))
  20. if constructor_parameters.get('readonly', False):
  21. self.entry.config(state=tk.DISABLED)
  22. </body>
  23. </constructor>
  24. <destructor>
  25. <body>
  26. self.entry.destroy()
  27. </body>
  28. </destructor>
  29. <scxml initial="main">
  30. <state id="main" initial='initializing'>
  31. <state id="initializing">
  32. <transition target="../ready">
  33. <raise event="tk_widget" scope="narrow" target="'parent'">
  34. <parameter expr="self.entry"/>
  35. </raise>
  36. </transition>
  37. </state>
  38. <state id="ready">
  39. <transition port='input' event="change_entry" target='.' cond='tagorid == id(self)'>
  40. <parameter name='tagorid'/>
  41. <parameter name='new_value'/>
  42. <raise event="changed_entry" scope="narrow" target="'parent'">
  43. <parameter expr="self.name"/>
  44. <parameter expr="new_value"/>
  45. </raise>
  46. <script>
  47. print("Got entry change Tk event!")
  48. </script>
  49. </transition>
  50. <transition event="change_bg" target=".">
  51. <parameter name="colour"/>
  52. <script>
  53. self.entry.configure(bg=colour, disabledbackground=colour)
  54. </script>
  55. </transition>
  56. <transition event="change_event_name" target=".">
  57. <parameter name="new_name"/>
  58. <script>
  59. self.name = new_name
  60. </script>
  61. </transition>
  62. <transition event="change_value" target=".">
  63. <parameter name="new_value"/>
  64. <script>
  65. print("CHANGE VALUE IN ENTRY")
  66. self.strvar.set(new_value)
  67. </script>
  68. </transition>
  69. <transition event="disable" target=".">
  70. <script>
  71. self.entry.config(state=tk.DISABLED)
  72. </script>
  73. </transition>
  74. </state>
  75. </state>
  76. </scxml>
  77. </class>