wxWidgets:如何捕捉wxListCtrl上的左键单击?

2024-02-27

我想将复选框添加到 wxListCtrl,这工作正常,只是当鼠标单击项目时似乎没有 EVT_LIST_ITEM_CLICK 或 EVT_LIST_ITEM_LEFT_CLICK 事件来捕获,以便可以切换图像。有右键单击和中键单击的事件,但没有左键单击 - 这意味着您必须单击中键或右键才能勾选/取消勾选列表中的项目。

有谁知道是否有可以使用的左键单击事件?我尝试了项目选择和项目激活事件,但这些事件不报告事件的像素位置,因此我无法使用它们来确定图像是否是单击的项目的一部分。

我的代码基于一些wxWidgets 维基 http://wiki.wxwidgets.org/WxListCtrl#Implement_wxListCtrl_with_Checkboxes,除了它们覆盖 wxListCtrl 类,为简单起见我想避免使用它。我也知道 wxGrid 和其他替代控件,但它们都没有 wxListCtrl 那么快(而且 wxGrid 复选框看起来也很糟糕。)

那么,有人知道如何在 wxListCtrl 中获取左键单击的坐标吗?

编辑:抱歉,wxListCtrl不是wxListGrid(对wxGrid想得太仔细了......)


我很困惑。您应该能够像任何其他小部件一样绑定到 EVT_LEFT_DOWN。我刚刚尝试过,它对我有用。请参见以下示例:

import wx

类 MyForm(wx.Frame):


def __init__(self):
    wx.Frame.__init__(self, None, wx.ID_ANY, "List Control Tutorial", size=(500,500))

    # Add a panel so it looks the correct on all platforms
    panel = wx.Panel(self, wx.ID_ANY)
    self.index = 0

    self.list_ctrl = wx.ListCtrl(panel, size=(-1,100),
                     style=wx.LC_REPORT
                     |wx.BORDER_SUNKEN
                     )
    self.list_ctrl.InsertColumn(0, 'Subject')
    self.list_ctrl.InsertColumn(1, 'Due')
    self.list_ctrl.InsertColumn(2, 'Location', width=125)
    self.list_ctrl.Bind(wx.EVT_LEFT_DOWN, self.onLeftClick)

    btn = wx.Button(panel, label="Add Line")
    btn.Bind(wx.EVT_BUTTON, self.add_line)

    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
    sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
    panel.SetSizer(sizer)

def add_line(self, event):
    line = "Line %s" % self.index
    self.list_ctrl.InsertStringItem(self.index, line)
    self.list_ctrl.SetStringItem(self.index, 1, "01/19/2010")
    self.list_ctrl.SetStringItem(self.index, 2, "USA")
    self.index += 1

def onLeftClick(self, event):
    pos = event.GetPosition()
    print str(pos)
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wxWidgets:如何捕捉wxListCtrl上的左键单击? 的相关文章

  • 关闭 Tkinter 后运行 wxPython

    我们有两个应用程序 一个使用 Tkinter 界面开发 另一个使用 wxPython 构建 两者都相当复杂 运行完 Tkinter 应用程序后 我希望在选择 Tkinter 应用程序中的按钮后运行 wxPython 应用程序 是否可以切换事
  • wxPython ListCtrl 帮助

    我正在使用 ListCtrl 它会动态填充项目 当项目 激活 双击 Enter 时 它会调用一个函数 def onClick self event 由于没有预设 ID 我如何找出列表中的哪个项目被单击 字符串是作为自身还是事件的一部分传递给
  • 还没有适用于 Python 3(或 3.3)的 wxPython 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想开始使用 wxPython 但我发现它没有针对 Python 3 进行更新 我正在使用最新版本的 Python 即 3 3 所以我开始
  • wx.TextCtrl(或底层 GTK+)的多线程问题

    我正在开发一个GUI来启动外部长期运行的后台程序 该后台程序可以通过 stdin 给出输入命令 并使用 stdout 和 stderr 来保持打印输出和错误消息 我在 GUI 中使用 wx TextCtrl 对象来提供输入和打印输出 我当前
  • wx (Python) 小部件的 GUI 更新缓慢?

    考虑这个例子 在 python2 7 Ubuntu 11 04 上尝试过 import wx import wx lib agw knobctrl as KC started from http wxpython org Phoenix d
  • 在 Linux 上创建带范围的 wxSlider

    我正在尝试使用 Python 中的 wxSlider 创建一个带有范围选择选项的滑块 它有一个可选的范围参数 但问题是 SL SELRANGE 允许用户在滑块上选择范围 仅限 Windows 我正在使用Linux 我想我可以继承 wxSli
  • wxPython 最好的实时绘图小部件是什么?

    我想使用 Python 和 wxPython 显示一个包含一条或两条曲线 每秒最多 50 个样本的实时图表 该小部件应支持 Win32 和 Linux 平台 欢迎任何提示 编辑添加 我不需要以 50 fps 更新显示 但需要在两条曲线上显示
  • wxPython进度条

    我不能使用wx ProgressDialog http www wxpython org docs api wx ProgressDialog class html因为我需要向对话框添加额外的内容 暂停按钮和有关当前正在处理的内容的信息 是
  • wxPython 因分段错误而崩溃

    我很困惑为什么我的应用程序因分段错误而崩溃 我有一个使用 wxPython 作为前端的 python 应用程序 我的应用程序因分段错误而随机崩溃 我知道它必须是 wxPython 因为我有相同代码的控制台版本 并且它不会崩溃 前端是一个只读
  • 约束 wxPython MultiSplitterWindow 窗格

    Edit 我将问题保留原样 因为这仍然是一个好问题 而且答案可能对其他人有用 但是 我会注意到我找到了一个实际的解决方案my通过使用完全不同的方法来解决问题AuiManager 看到answer https stackoverflow co
  • 如何让wxpython密码textctrl显示字符?

    使用 wxPython 可以将密码字段创建为 wx TextCtrl frm 1 style wx TE PASSWORD 我想知道是否有一种方法可以动态地将这个密码字段更改为普通的文本控件 以便用户可以看到密码是什么 创建控件后无法更改样
  • WxPython改变位图按钮的形状

    嗨 我对 wxPython 还算陌生 仍在学习过程中 我正在尝试使用特定图像制作位图按钮 例如 http i min us idk3Uy png http i min us idk3Uy png 问题是我想保留按钮中图像的原始形状 例如圆形
  • 如何为Python安装wxversion

    我正在使用 PyCharm 尝试 SPy Spectral Python 库 并且我已经达到了它告诉我未找到 wxversion 的地步 如何安装wxversion 总的来说 我对 Python 很陌生 所以我是否做错了什么 这是我的代码
  • 使用 matplotlib 将 networkx 图嵌入到 wxPython 中

    我用 networkx 创建了一个图表 G nx DiGraph building the graph and I can display it with matplotlib like this nx draw G matplotlib
  • 在 OSX“El Capitan”上安装 wxPython 2.8(用于骑行)

    我正在尝试安装 wxPython 2 8 unicode 版本 以便能够使用 robotsframework ride 到目前为止 从网站下载的安装程序失败 并显示错误 没有可安装的软件 并且使用Brew安装3 0版本 与ride不兼容 我
  • 来自 SWIG PyObject_Call Segfault 的 Python 回调

    我有一个 wx py Shell shell 小部件 它允许用户执行与我的程序交互的 python 代码 我希望能够将用户在此空间中定义的函数传递给我的 C 代码 通过 wxswig 围绕我的自定义小部件生成的包装器 并执行它 在我的 C
  • wxPython:在现有 wx.Panel 上覆盖 wx.Panel 的好方法

    我有一个 wx Frame 其中有一个主 wx Panel 其中有几个小部件 我想要其中的一个按钮来启动 帮助面板 这个帮助面板可能是一个wx Panel 我希望它覆盖整个主wx Panel 不包括wx Frame的菜单栏 帮助按钮上应该有
  • wxPython 上的 IPython

    我一直在尝试找到一种方法 让 IPython Shell 能够在wx Frame 在库代码或 Google 中搜索 基于 wxPython 的 IPython 小部件 https www google com search q wxPyth
  • python: X 服务器上的致命 IO 错误 11(资源暂时不可用):0.0

    我正在尝试读取一些图像 稍后打算对它们执行一些任务 同时将图像读入内存 我想显示动画 gif 图像 为此 我必须使用线程 现在它给出错误 python Fatal IO error 11 Resource temporarily unava
  • 如何以编程方式关闭wx.DirDialog?

    我有 wxpython 应用程序 可以在单击按钮时打开 wx DirDialog dlg wx DirDialog self Choose a directory style wx DD DEFAULT STYLE if dlg ShowM

随机推荐

  • Facebook 以页面管理员身份发布页面提要

    var message test var picture http l yimg com f i tw ks show 120604 mntl01 jpg var link https www youtube com watch v BIl
  • ReactJS:当输入元素进入 DOM 时如何将焦点设置到输入元素?

    如何将焦点设置到input元素进入 DOM 时 Scenario 单击按钮时 将显示输入元素 如何将焦点设置到该元素 代码片段 class Component extends React Component constructor prop
  • 错误处理仅有效一次

    我有一个非常简单的 VBA 代码 应该尝试打开一个不存在的文件 将我发送到错误处理程序 然后以无限循环返回到我的代码 故意 但是 编译器仅在第一次捕获错误 然后在第二次传递时中断 我已经尝试了 On Error 语句的每种组合以在第二次传递
  • 如何增加 QListWidget 中项目/行的填充(或边距)?

    我们正在寻找一种方法来增加填充 或边距 QListWidget我们正在我们的应用程序中使用 我们希望为所有四个方向增加此值 以便为列表中的文本提供一些额外的空间 我查看了两者的文档QListWidget http doc qt io qt
  • 关闭按钮仅适用于 Qt 中的某些选项卡

    我正在使用 Qt 完成大学作业 并且我想使用QTabWidget显示一个聊天窗口 就像Pidgin s https www pidgin im 我想让 群聊 选项卡始终打开且无法关闭 而其余 私人频道 选项卡可关闭 QTabWidget s
  • 所有页面/视图都需要 Blazor /Pages 文件夹吗?

    使用默认的 Blazor helloworl 应用程序 我将 FetchData razor 页面复制到单独的自定义文件夹中 结果 页面未正确呈现 页面正在占用 整个屏幕 导航菜单消失了 问题 blazor 页面 视图必须位于 Pages
  • 如何在不使用任何算术运算的情况下求 x mod 15?

    假设我们得到一个无符号整数 并且不使用任何算术运算符 即 or 我们要找到x mod 15 我们可以使用二进制位操作 据我所知 我是根据两点得出这个结论的 a a mod 15 a mod 16 for a lt 15 Let a x mo
  • 从 Firefox 的缓存中读取脚本标签的来源

    我正在向我的应用程序添加一些错误报告 我希望能够报告类中的方法名称 即使该函数可能是匿名的 到目前为止 我的解决方案涉及通过使用 XmlHttpRequest 加载脚本标签来读取脚本标签的源代码 我的问题是 Firefox 不会从缓存加载
  • 如何管理露天的访问权限

    大家好 提前感谢您的帮助 我正在尝试在露天配置访问权限 但现在陷入了一个场景如果有人定义实现此功能的正确方法 那将会有很大帮助现在我的问题是 我想创建一个网站 所有用户都可以访问 然后将在该站点中创建文件夹和子文件夹 如果需要 我准备自定义
  • K 最近邻算法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用 KNN 算法 假设 k 5 现在我尝试通过获取 5 个最近的邻居来对未知对象进行分类 如果确定 4 个最近邻居后 接下来的 2 个
  • 将 Angular 7 部署到 github 页面

    我有一个简单的 Angular7 应用程序 它只有两条路线 主要是 文章 如果你在本地测试它 它会起作用 但是当你放到 github 页面上时 它只会加载页面的 css 我按照以下角度文档进行部署文档 https angular io gu
  • 在C#中获取主目录的路径?

    好的 我已经查过了Environment SpecialFolder 但里面没有任何东西 我想在C 中获取当前用户的主目录 例如 c documents and settings user在XP下 c users user在 Vista 下
  • 如何找到给定数组中总和为“N”的所有匹配数字

    我的目标是找到所有可能的组合 总和达到给定的总数 例如 如果数组是 2 59 3 43 5 9 8 62 10 4 如果总数为 12 则可能的组合为 2 10 3 9 8 4 5 3 4 这是我编写的第一组代码 想知道对此可以进行的最佳改进
  • 跨源请求被阻止:同源策略不允许读取 http://........ 的远程资源

    我正在尝试使用 ajax 主要通过 javascript 从 Web 应用程序与企业应用程序进行通信 我尝试了很多方法来解决这个问题但没有成功 我在那里看到了几个在线 httppost 工具 我可以看到响应文本 但我这边并没有发生这种情况
  • 如何在 iframe 中正确显示 SSRS 站点

    I have been working on a project where I need to load a ssrs site within an iframe The iframe is acutally using the tele
  • android webview 中的 onShowFileChooser() 只能运行一次

    我需要从设备中选取图像并将其上传到服务器 第一次 当我选择图像时 onShowFileChooser 被调用并且一切正常 但是 当我尝试再次单击上传时 onShowFileChooser 永远不会被调用 但它适用于非棒棒糖设备 每当我单击上
  • 无法从 Google Places API 获取特殊营业时间

    特别营业时间在以下位置进行营销 记录谷歌我的商家 see https support google com business answer 6303076 https support google com business answer 6
  • Java时间解析“Jun 26th 2021, 04:30:15 pm NY”

    我有一个看起来像这样的字符串 String str Jun 26th 2021 04 30 15 pm NY 我想将其转换为ZonedDateTime 为此我使用DateTimeFormatterBuilder DateTimeFormat
  • 显式非单参数构造函数

    谁能解释为什么非单参数构造函数标记为显式编译 据我了解 这在这里绝对是无用的关键字 那么为什么它编译时没有错误呢 class X public explicit X int a int b 在 C 03 中 在这种特殊情况下 标记两个参数构
  • wxWidgets:如何捕捉wxListCtrl上的左键单击?

    我想将复选框添加到 wxListCtrl 这工作正常 只是当鼠标单击项目时似乎没有 EVT LIST ITEM CLICK 或 EVT LIST ITEM LEFT CLICK 事件来捕获 以便可以切换图像 有右键单击和中键单击的事件 但没