我无法弄清楚如何从绑定按钮调用的函数返回值。
我想要相当于:
call_function = function()
def function():
return 'this'
print call_function
并且有call_function ='this'
但要使用这样的东西:
call_function_button.Bind(wx.EVT_BUTTON, class_object.function)
答案 0 :(得分:1)
你并没有真正考虑以事件为导向的方式。调用按钮事件时,它不会返回有用的内容。相反,您需要将 call_function 变量设置为实例变量: self.call_function 。然后你可以在按钮处理程序中设置它。这是一种方法:
import random
import wx
########################################################################
class Panel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.call_function = None
self.choices = ["this", "that", "something", "other", "python"]
btn = wx.Button(self, label="Change Variable Value")
btn.Bind(wx.EVT_BUTTON, self.onButton)
#----------------------------------------------------------------------
def onButton(self, event):
"""
Change the value of self.call_function
"""
self.call_function = random.choice(self.choices)
print self.call_function
########################################################################
class Frame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Return value")
panel = Panel(self)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = Frame()
app.MainLoop()
请注意,我正在为其分配各种值,而不仅仅是一个。你可以分配你想要的任何东西。然后在下一个函数调用中,您可以通过 self.call_function
访问它