From ba84721dd9ac1e23f149b6daded56f5a450f630f Mon Sep 17 00:00:00 2001 From: Richard Jarvis Date: Wed, 14 Feb 2018 11:05:11 +0000 Subject: [PATCH] Update to MAKE_FUNC MAKE_FUNC now handles class functions #335 Renamed access widget buttons #328 --- appJar/appjar.py | 23 +++++++++++------------ examples/issues/issue377.py | 9 +++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/appJar/appjar.py b/appJar/appjar.py index 40e3a3d..3098663 100644 --- a/appJar/appjar.py +++ b/appJar/appjar.py @@ -3392,15 +3392,16 @@ def MAKE_FUNC(funcName, param, discard=False): if not callable(funcName) and not hasattr(funcName, '__call__'): raise Exception("Invalid function: " + str(funcName)) - # no arguments - args = getArgs(funcName) - if len(args[0]) == 0 and args[1] is None and args[2] is None: - return lambda *args: funcName() + # check if the function requires arguments + argsList = getArgs(funcName) + # if no args, or 1 arg in a bound function + noArgs = len(argsList[0])==0 or (len(argsList[0])==1 and inspect.ismethod(funcName)) - if discard: - return lambda *args: funcName(param) + # if no args/varargs/kwargs then don't give the param + if noArgs and argsList[1] is None and argsList[2] is None: + return lambda *args: funcName() else: - return lambda: funcName(param) + return lambda *args: funcName(param) def _checkFunc(self, names, funcs): singleFunc = None @@ -7500,9 +7501,7 @@ def _buildButton(self, title, func, frame, name=None): if func is not None: command = self.MAKE_FUNC(func, title) - bindCommand = self.MAKE_FUNC(func, title, True) but.config(command=command) - # but.bind('', bindCommand) #but.bind("", self._focusNextWindow) #but.bind("", self._focusLastWindow) @@ -7981,9 +7980,9 @@ def _settings(): self.label("access_bg_colBox", "", pos=('p',1), sticky="ew", submit=_changeBg, relief="ridge", tip="Click here to set the background colour") self.sticky="se" with self.frame("access_button_box"): - self.button("access_ok_button", _settings, name="OK", pos=(0,0)) - self.button("access_cancel_button", _close, name="Cancel", pos=(0,1)) - self.button("access_reset_button", self._resetAccess, name="Reset", pos=(0,2)) + self.button("access_apply_button", _settings, name="Apply", pos=(0,0)) + self.button("access_reset_button", self._resetAccess, name="Reset", pos=(0,1)) + self.button("access_close_button", _close, name="Close", pos=(0,2)) self.accessMade = True def _resetAccess(self): diff --git a/examples/issues/issue377.py b/examples/issues/issue377.py index ddcfc6b..2785fa9 100644 --- a/examples/issues/issue377.py +++ b/examples/issues/issue377.py @@ -6,6 +6,10 @@ def getEm(): print(app.getAllEntries()) +def getEmi(btn): + print(btn) + print(app.getAllEntries()) + with gui("Labels") as app: app.addEntry("e1") app.addLabelEntry("e2") @@ -13,3 +17,8 @@ def getEm(): app.entry("e4", label=True) app.entry("e5", label="New label") app.button("PRESS", getEm) + app.button("PRESS2", getEmi, name="PRESS") + app.link("click me", getEm) + app.link("click me2", getEmi) + app.bindKey("z", getEm) + app.bindKey("x", getEmi)