gpt4 book ai didi

python - 从事件处理函数返回值 wxPython

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:02 24 4
gpt4 key购买 nike

所以在普通的 python 脚本中你可以做这样的事情:

def func():
i = 1
return i
i = func()

一般来说,另一个 python 程序将能够导入包含此文件的文件,只需在他们的程序中说 i = func() ,他们就会得到 i 的值。

现在我想做类似的事情,但我需要在用户按下按钮或从 GUI 激活事件处理程序时执行此操作。像这样的东西:

import wx

class MyForm(wx.Frame):

def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Pressing dem keyz")

# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
self.btn = wx.ToggleButton(panel, label="TOGGLE")
self.btn2 = wx.ToggleButton(panel, label="TOGGLE 2", pos = (85,0))

self.btn.Bind(wx.EVT_CHAR_HOOK, self.onKeyPress)
self.btn2.Bind(wx.EVT_CHAR_HOOK, self.onKeyPress)

def onKeyPress(self, event):
space = False
keycode = event.GetKeyCode()
print keycode
if keycode == ord(' '):
print "SPACEBAR!"
space = True
self.btn.SetValue(space)

if space == True:
print "Lemme return i please"
i = 1
print i
return i #ALSO PART OF WHAT I WANT TO DO
elif keycode == wx.WXK_RETURN:
self.btn
elif keycode == wx.WXK_LEFT:
self.btn2
print 'YOU MOVED LEFT'
elif keycode == wx.WXK_RIGHT:
self.btn
print 'YOU MOVED RIGHT'
elif keycode == wx.WXK_UP:
print 'YOU MOVED UP'
elif keycode == wx.WXK_DOWN:
print 'YOU MOVED DOWN'
elif keycode == wx.WXK_ESCAPE:
self.Destroy()
#NOW HERE'S THE PART THAT I WANT TO IMPLEMENT
return keycode
#I do not need the keycode necessarily but I want to do something similar to this along with the |return i| above

# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()

我看过这些 Call functions from within a wxPython event handler , Return value from wxpython main frame但他们并没有真正解决我想在这里做的事情

最佳答案

是的,你可以独立调用事件处理器,为什么不呢?

def OnClick (self, event=None):
if event==None: return self.LastMousePosition
self.LastMousePosition = event.GetMousePosition()

pos = OnClick()

而且,从事件处理程序返回值没有意义。返回值可能只向调用者指示某些内容。例如,如果处理程序返回 True,则某些事情正在继续,如果为 False,则进程停止。

只有当事件被触发时才会调用处理程序,无论是通过 GUI 输入还是您可以手动发布事件,从而模拟它。

您在回答中写的是从事件处理程序中传递值的方式。这就是它是如何完成的。

没有“从事件处理程序返回值”。

也许,但只是也许,某个地方存在一个事件驱动的系统,它将返回存储到堆栈或某个地方,供您稍后取回。WX 不会这样做。

关于python - 从事件处理函数返回值 wxPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com