wxpython的wx.ListCtrl怎么左键单击触发
时间: 2023-11-02 17:01:34 浏览: 154
您可以使用ListCtrl的Bind方法绑定左键单击事件,具体实现如下:
```python
import wx
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="ListCtrl Demo")
self.list_ctrl = wx.ListCtrl(self, style=wx.LC_REPORT)
self.list_ctrl.InsertColumn(0, 'Name')
self.list_ctrl.InsertColumn(1, 'Age')
self.list_ctrl.InsertColumn(2, 'Gender')
# 绑定左键单击事件
self.list_ctrl.Bind(wx.EVT_LEFT_DOWN, self.on_left_click)
# 添加数据
self.list_ctrl.Append(["Tom", "28", "Male"])
self.list_ctrl.Append(["Lucy", "23", "Female"])
self.list_ctrl.Append(["John", "31", "Male"])
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.list_ctrl, 1, wx.EXPAND)
self.SetSizer(sizer)
def on_left_click(self, event):
# 获取当前选中行的索引
index = self.list_ctrl.GetFirstSelected()
if index != -1:
# 获取选中行的数据
name = self.list_ctrl.GetItemText(index)
age = self.list_ctrl.GetItemText(index, 1)
gender = self.list_ctrl.GetItemText(index, 2)
print(f"Selected: {name}, {age}, {gender}")
app = wx.App()
frame = MyFrame(None)
frame.Show()
app.MainLoop()
```
在上面的代码中,我们使用`Bind`方法绑定了`wx.EVT_LEFT_DOWN`事件,当用户在ListCtrl中左键单击时,就会触发`on_left_click`方法。在该方法中,我们可以通过`GetFirstSelected`方法获取当前选中行的索引,然后使用`GetItemText`方法获取选中行的数据。最后,我们打印出选中行的数据。
阅读全文