单击按钮时如何获取?
How can I get when the button is clicked?
我在 erlang 中使用 wxwidget。
init() ->
Wx=wx:new(),
F=wxFrame:new(Wx, -1, "Hello, World!"),
Panel = wxPanel:new(F),
wxButton:new(Panel, 12, [{label,"Default"}]),
wxFrame:show(F).
如果我点击按钮什么也没做,我想做点什么,例如执行一个功能。我该怎么做?
谢谢
最好的问候
附件 link 解释了如何使用 wxWidgets 一般处理事件,但它也讨论了 wxbutton 及其点击事件。那里也有一些示例代码。希望这有帮助。
这是 shell 中的一个示例。
首先,创建一个带有按钮的 window,您已经拥有:
1> Wx = wx:new().
{wx_ref,0,wx,[]}
2> Frame = wxFrame:new(wx:null(), -1, "Hello, World!").
{wx_ref,35,wxFrame,[]}
3>
3> Panel = wxPanel:new(Frame).
{wx_ref,36,wxPanel,[]}
4>
4> Button = wxButton:new(Panel, 12, [{label,"Default"}]).
{wx_ref,37,wxButton,[]}
现在您可以注册回调了。在这种情况下,我只是打印出传递给回调的数据:
5> wxButton:connect(Button, command_button_clicked, [{callback,
5> fun(Evt, Obj) ->
5> io:format("click~n event = ~p~n obj = ~p~n", [Evt, Obj])
5> end
5> }]).
ok
显示 window:
6> wxFrame:show(Frame).
true
7>
现在,当您单击该按钮时,您应该会看到:
click
event = {wx,12,
{wx_ref,37,wxButton,[]},
[],
{wxCommand,command_button_clicked,[],0,0}}
obj = {wx_ref,39,wxCommandEvent,[]}
7>
编辑(关于 OTP 的注释):
当您使用 wx 实现更完整的 OTP 风格的应用程序时,您可能想要做一些稍微不同的事情,因为您不希望这种乐趣四处闲逛。相反,您可以在单击按钮时向您发送一条消息。如果您省略 'callback' 连接选项,那么事件将被传递给调用连接的进程。所以你可以这样做:
5> wxButton:connect(Button, command_button_clicked, []).
ok
如果您这样做并单击按钮,您的(shell 在本例中)进程将收到一条消息:
7> receive Msg -> Msg after 0 -> timeout end.
{wx,12,
{wx_ref,37,wxButton,[]},
[],
{wxCommand,command_button_clicked,[],0,0}}
8>
我在 erlang 中使用 wxwidget。
init() ->
Wx=wx:new(),
F=wxFrame:new(Wx, -1, "Hello, World!"),
Panel = wxPanel:new(F),
wxButton:new(Panel, 12, [{label,"Default"}]),
wxFrame:show(F).
如果我点击按钮什么也没做,我想做点什么,例如执行一个功能。我该怎么做?
谢谢 最好的问候
附件 link 解释了如何使用 wxWidgets 一般处理事件,但它也讨论了 wxbutton 及其点击事件。那里也有一些示例代码。希望这有帮助。
这是 shell 中的一个示例。
首先,创建一个带有按钮的 window,您已经拥有:
1> Wx = wx:new().
{wx_ref,0,wx,[]}
2> Frame = wxFrame:new(wx:null(), -1, "Hello, World!").
{wx_ref,35,wxFrame,[]}
3>
3> Panel = wxPanel:new(Frame).
{wx_ref,36,wxPanel,[]}
4>
4> Button = wxButton:new(Panel, 12, [{label,"Default"}]).
{wx_ref,37,wxButton,[]}
现在您可以注册回调了。在这种情况下,我只是打印出传递给回调的数据:
5> wxButton:connect(Button, command_button_clicked, [{callback,
5> fun(Evt, Obj) ->
5> io:format("click~n event = ~p~n obj = ~p~n", [Evt, Obj])
5> end
5> }]).
ok
显示 window:
6> wxFrame:show(Frame).
true
7>
现在,当您单击该按钮时,您应该会看到:
click
event = {wx,12,
{wx_ref,37,wxButton,[]},
[],
{wxCommand,command_button_clicked,[],0,0}}
obj = {wx_ref,39,wxCommandEvent,[]}
7>
编辑(关于 OTP 的注释):
当您使用 wx 实现更完整的 OTP 风格的应用程序时,您可能想要做一些稍微不同的事情,因为您不希望这种乐趣四处闲逛。相反,您可以在单击按钮时向您发送一条消息。如果您省略 'callback' 连接选项,那么事件将被传递给调用连接的进程。所以你可以这样做:
5> wxButton:connect(Button, command_button_clicked, []).
ok
如果您这样做并单击按钮,您的(shell 在本例中)进程将收到一条消息:
7> receive Msg -> Msg after 0 -> timeout end.
{wx,12,
{wx_ref,37,wxButton,[]},
[],
{wxCommand,command_button_clicked,[],0,0}}
8>