Làm cách nào để gọi một sự kiện cụ thể theo cách thủ công từ mã của riêng tôi?wxPython: Gọi một sự kiện theo cách thủ công
Trả lời
Tôi nghĩ rằng bạn muốn wx.PostEvent.
Ngoài ra còn có một số thông tin về cách đăng sự kiện từ chủ đề khác cho long running tasks on the wxPython wiki.
Bạn có nghĩa là bạn muốn có một công văn sự kiện?
:: wxPostEvent trống wxPostEvent (wxEvtHandler * dest, wxEvent & sự kiện)
Trong một ứng dụng GUI, chức năng này bài viết sự kiện vào quy định dest đối tượng sử dụng wxEvtHandler :: AddPendingEvent. Nếu không, nó sẽ gửi sự kiện ngay lập tức bằng cách sử dụng wxEvtHandler :: ProcessEvent. Xem tài liệu tương ứng để biết chi tiết (và cẩn thận).
Bao gồm các file
<wx/app.h>
Chủ đề cũ, nhưng tôi nghĩ rằng tôi đã nhận ra điều này sau khi bị nhầm lẫn về nó trong một thời gian dài, vì vậy nếu có ai khác đến đây tìm câu trả lời, điều này có thể hữu ích.
Để tự gửi một sự kiện, bạn có thể sử dụng
self.GetEventHandler().ProcessEvent(event)
(wxWidgets docs here, wxPython docs here)
hoặc
wx.PostEvent(self.GetEventHandler(), event)
(wxWidgets docs, wxPython docs)
nơi event
là sự kiện bạn muốn đăng. Tạo sự kiện với ví dụ:
wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.GetId())
nếu bạn muốn đăng sự kiện EVT_BUTTON. Làm cho nó một PyCommandEvent có nghĩa là nó sẽ lan truyền lên trên; các loại sự kiện khác không truyền theo mặc định.
Bạn cũng có thể tạo sự kiện tùy chỉnh có thể mang bất kỳ dữ liệu nào bạn muốn. Dưới đây là một ví dụ:.!
myEVT_CUSTOM = wx.NewEventType()
EVT_CUSTOM = wx.PyEventBinder(myEVT_CUSTOM, 1)
class MyEvent(wx.PyCommandEvent):
def __init__(self, evtType, id):
wx.PyCommandEvent.__init__(self, evtType, id)
myVal = None
def SetMyVal(self, val):
self.myVal = val
def GetMyVal(self):
return self.myVal
(Tôi nghĩ rằng tôi đã tìm thấy mã này trong một kho lưu trữ mailing list ở đâu đó, nhưng tôi dường như không thể tìm thấy nó một lần nữa Nếu đây là ví dụ của bạn, nhờ Vui lòng thêm một lời nhận xét và chịu tín dụng cho nó!)
Vì vậy, bây giờ, để Đăng một sự kiện tùy chỉnh:
event = MyEvent(myEVT_CUSTOM, self.GetId())
event.SetMyVal('here is some custom data')
self.GetEventHandler().ProcessEvent(event)
và bạn có thể gắn nó giống như bất kỳ sự kiện khác
self.Bind(EVT_CUSTOM, self.on_event)
và lấy dữ liệu tùy chỉnh trong xử lý sự kiện
def on_event(self, e):
data = e.GetMyVal()
print 'custom data is: {0}'.format(data)
Hoặc bao gồm dữ liệu tùy chỉnh trong hàm tạo sự kiện và lưu một bước:
class MyEvent(wx.PyCommandEvent):
def __init__(self, evtType, id, val = None):
wx.PyCommandEvent.__init__(self, evtType, id)
self.myVal = val
, vv
Hy vọng điều này là hữu ích cho một ai đó.
Có một cách đơn giản đơn giản để làm điều đó với phiên bản gần đây của wxPython (xem http://wiki.wxpython.org/CustomEventClasses):
# create event class
import wx.lib.newevent
SomeNewEvent, EVT_SOME_NEW_EVENT = wx.lib.newevent.NewEvent()
# post it, with arbitrary data attached
wx.PostEvent(target, SomeNewEvent(attr1=foo, attr2=bar))
# bind it as usual
target.Bind(EVT_SOME_NEW_EVENT, target.handler)
- 1. Cách gọi một sự kiện thủ công trong C#?
- 2. kích hoạt sự kiện chạm theo cách thủ công
- 3. Sự kiện thay đổi lửa theo cách thủ công
- 4. Highcharts - kích hoạt sự kiện di chuột theo cách thủ công trên một điểm
- 5. Có cách nào để kích hoạt sự kiện Google Maps theo cách thủ công không?
- 6. Gọi theo cách thủ công DbMigration.Up trong EF
- 7. Kích hoạt sự kiện bật lên ngày tháng theo cách thủ công
- 8. các sự kiện bàn phím chụp wxpython trong một wx.Frame
- 9. Javascript theo cách thủ công .onchange() event
- 10. Có cách nào để gọi thủ công sự kiện "Nhập khóa" trên hộp văn bản không?
- 11. Sự kiện dán được kích hoạt theo cách thủ công không có thuộc tính .originalEvent?
- 12. wxpython auinotebook đóng sự kiện tab
- 13. Kích hoạt sự kiện thủ công trong JS Helper CakePHP
- 14. SignalR - Đặt ClientID theo cách thủ công
- 15. Sử dụng Segue theo cách thủ công
- 16. Cách tạo người dùng theo cách thủ công với Devise
- 17. sự kiện đặt lại thủ công, Sự kiện đặt lại tự động
- 18. Tôi làm cách nào để gọi Action theo cách thủ công?
- 19. QTextEdit. Cách chọn văn bản theo cách thủ công?
- 20. Cách cài đặt thư viện python theo cách thủ công
- 21. Cách tránh thực hiện INotifyPropertyChanged theo cách thủ công
- 22. Theo cách thủ công chuyển tiếp chuỗi - oracle sql
- 23. Làm cách nào để tạo TypeTag theo cách thủ công?
- 24. Android: Cách thêm tệp vào apk theo cách thủ công?
- 25. Tạo bối cảnh khuôn mặt theo cách thủ công
- 26. Tự động hoàn thành thủ công: mụcSelect so với thay đổi sự kiện
- 27. Sắp xếp theo cách thủ công một mảng theo thứ tự tăng dần
- 28. iOS5 ngắt cuộc gọi quay vòng UISplitViewController, cách gọi thủ công?
- 29. Khóa hàng - theo cách thủ công sử dụng chúng
- 30. Chèn dữ liệu theo cách thủ công trong Firebase
Tôi không biết C, đây là khó hiểu. Bạn có thể cho tôi dòng Python mà tôi phải chạy không? –
Tôi nghĩ nó giống nhau. wx.core.PostEvent? Kiểm tra: http://www.google.com/codesearch?q=wxPostEvent&hl=vi&btnG=Search+Code –
Tôi không thấy nó trong không gian tên wx chính, cũng như trong không gian tên của Sự kiện. –