wxpython如何发送消息,就好像windows下的postmessage一样
postevent是吗?怎么觉得他好麻烦
比如我要发送选择菜单消息,应该怎么做?
[解决办法]
关键往哪发送消息,是什么应用(postmessage不熟)
不过发消息一般套接字,网络就http
[解决办法]
LZ说的是GUI消息,LS可能误会了。
wxPython定义了一套消息,但它没有文档,很不爽。
举个例子吧:
我做了个grid,现在要往里面加入一行数据,
import wx.grid as GridmsgAppendRows = Grid.GridTableMessage(grid.GetTable(), # The table Grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, # what we did to it 1 # how many )grid.ProcessTableMessage(msgAppendRows)
[解决办法]
好像文档同c++是一样,python下不是很好用,你可以试试输出个简单文档,保存下来以后参考就稍微方便点...
import wx
help(wx)
[解决办法]
1.PostMessage函数需要接收窗口的句柄.所以wxPython也不例外.
2.看看这个网页:http://www.czug.org/python/wxpythoninaction/ch03.htm.
3.我忘记了从哪里搞来的下面一段代码
LogEvent, EVT_LOG_EVENT = wx.lib.newevent.NewEvent() #创建新事件
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
#若干其它代码
self.Bind(EVT_LOG_EVENT, self.LogEvent_Process) #绑定事件处理函数
def LogEvent_Process(self, evt):
#响应事件代码
print evt.msg
#制造并发送事件给wxObject
def PostEvent(wxObject, message, **kwargs):
event = LogEvent(msg=message, **kwargs) #msg参数类型应该不止是字串.
wx.PostEvent(wxObject, event)
class MyApp(wx.App):
frame = MyFrame(None, -1, "Hello, world") #实例化MyFrame
#创建某线程,将frame作为参数传递给该线程.或者让frame成为全局变量.
#并在线程中调用PostEvent(frame, "send Event from thread!")
4.上面的代码我没测试过,仅供参考.
[解决办法]
wxPython的消息都是基本上都是用回調的方式進行。
也就是用自己的函數綁定或覆蓋wxPython定義的函數實現消息發送。
可以看下wxDemo中相關的例子。