我正在尋找一種方法將函數綁定到從wx.gizmos editableListBox中選擇列表項所觸發的事件。我想要選擇用一個可以由用戶編輯的字符串來填充richTextCtrl1。wx.python將事件綁定到editableListBox列表項的
下面是沒有事件綁定或函數的UI設計的快速模擬,因爲我的實際應用程序要大得多。
import wx
import wx.richtext
import wx.gizmos
def create(parent):
return myFrame(parent)
[wxID_MYFRAME, wxID_MYFRAMEMYEITABLELISTBOX, wxID_MYFRAMEMYFRAME_PANEL,
wxID_MYFRAMERICHTEXTCTRL1,
] = [wx.NewId() for _init_ctrls in range(4)]
class myFrame(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_MYFRAME, name=u'myFrame', parent=prnt,
pos=wx.Point(551, 188), size=wx.Size(500, 500),
style=wx.DEFAULT_FRAME_STYLE, title=u'myPanel')
self.SetClientSize(wx.Size(498, 466))
self.SetInitialSize(wx.Size(500, 500))
self.myFrame_panel = wx.Panel(id=wxID_MYFRAMEMYFRAME_PANEL,
name=u'myFrame_panel', parent=self, pos=wx.Point(0, 0),
size=wx.Size(498, 466), style=wx.TAB_TRAVERSAL)
self.myEitableListBox = wx.gizmos.EditableListBox(id=wxID_MYFRAMEMYEITABLELISTBOX,
label=u'myEitableListBox', name=u'myEitableListBox',
parent=self.myFrame_panel, pos=wx.Point(8, 56), size=wx.Size(200,
248))
self.myEitableListBox.SetStrings(['this', 'that', 'other'])
self.richTextCtrl1 = wx.richtext.RichTextCtrl(id=wxID_MYFRAMERICHTEXTCTRL1,
parent=self.myFrame_panel, pos=wx.Point(224, 64),
size=wx.Size(248, 240), style=wx.richtext.RE_MULTILINE,
value=u'')
self.richTextCtrl1.SetLabel(u'')
def __init__(self, parent):
self._init_ctrls(parent)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()
我找不到解決方案,查看wx.python演示示例。 Google也沒有太多幫助。我嘗試過Boa構造函數,並將一些事件綁定到可編輯列表框。下面是我曾嘗試雖然沒有工作過的綁定:
self.myEitableListBox.Bind(wx.EVT_SYS_COLOUR_CHANGED,
self.OnmyEitableListBoxSysColourChanged)
self.myEitableListBox.Bind(wx.EVT_SET_FOCUS, self.OnmyEitableListBoxSetFocus)
self.myEitableListBox.Bind(wx.EVT_LEFT_DOWN, self.OnmyEitableListBoxLeftDown)
def OnmyEitableListBoxSysColourChanged(self, event):
print self.myEitableListBox.GetSelection()
print "fired"
event.Skip()
def OnmyEitableListBoxSetFocus(self, event):
print self.myEitableListBox.GetSelection(self)
print "fired"
event.Skip()
def OnmyEitableListBoxLeftDown(self, event):
print self.myEitableListBox.GetSelection()
lb = event.GetEventObject()
data = lb.GetClientData(lb.GetSelection())
print "fired", data
event.Skip()
我一直在閱讀的文檔,並試圖找到wx.python TUTS。我找到的沒有幫助我理解如何獲得選定的列表項。如果我能得到選定的列表項,我想我可以使用填充ritchTextFeild的函數。我不應該認爲GetSelection()和事情是我在嘗試並且無法理解正在發生的事情。在運行時也沒有在控制檯中產生錯誤,所以我真的不知道從哪裏去。
感謝
您收到來自wx.EVT_LIST_ITEM_SELECTED的event.Text, 我需要找到EVT_LIST_INSERT_ITEM(etc ...)等更多事件的事件屬性,我可以從哪裏找到其他事件的文檔。我試過event.GetItemText和許多其他方法和事件(wx.EVT的)從希望通過試驗和錯誤的文件的東西將工作,這是沒有辦法編程。我想我正在尋找具有代碼示例來了解wxPython文檔的文檔。或者至少每個wx.EVT有哪些event.attr可用? – bobZBy