有没有办法将参数传递给按钮事件功能?

时间:2018-03-30 19:49:49

标签: events parameters wxpython parameter-passing

有没有办法将参数传递给事件函数?当我按下提交按钮时,我收到以下错误:

NameError:全局名称'文件名'未定义

以下是完整错误:

赛道(最近一次呼叫最后一次):   文件" C:\ Users \ sbing \ OneDrive \ Documents \ CNM \ Spring2018 \ CIS1250_Python \ Labs \ Prgm11 \ geopoint.py",第60行,提交     file = open(filename.GetValue(),' r') NameError:全局名称'文件名'未定义

这是我的代码:

ts

1 个答案:

答案 0 :(得分:0)

正如我的评论中所提到的,实现您想要的最简单方法是将引用更改为self.filename但是在回答问题时,是的,您可以。
使用lambda功能。

import wx

class TestFrame(wx.Frame):
    def __init__(self, *args):
        wx.Frame.__init__(self, *args)
        Button = wx.Button(self, -1, "Click me")
        Button.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, flag1="Parameter", flag2="Something else"))
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(Button,1,0,0)
        self.SetSizerAndFit(sizer)
        self.Show()

    def OnButton(self, event, flag1, flag2):
        print ("The Button was pressed")
        print ("Flag1 was set to ", flag1)
        print ("Flag2 was set to ", flag2)

if __name__ == "__main__":
    app = wx.App()
    myframe = TestFrame(None, -1, "Button Test")
    app.MainLoop()

enter image description here