我有一个wx.ListCtrl有wx.LC_REPORT位设置.它有3列.我希望第一列填充每个其他条目的复选框.我尝试使用该ListCtrl.InsertItem方法,但它只需要一个参数(info),我找不到任何关于该参数需要的文档.我已经试过路过一家wx.CheckBox以InsertItem无济于事.
是否可以将复选框作为wxPython ListCtrl中的条目?如果是这样,我将如何做到这一点?
如果对于我正在谈论的内容有任何歧义,这里是我想要的图片(不确定这是否是wx,但它是我正在寻找的).我想要在No.列中的1..5旁边的复选框.

你们中的任何人都有一个例子如何使以下成为可能:
我有一个listctrl显示> 600项.现在,我需要在这些项目中搜索用户输入的文本,并更新列表以仅显示包含此字符串的项目.
所以我们说这个列表包含"Hello","Hi"和"Morning".该列表显示所有三个项目.现在用户在textctrl中键入"h",listctrl缩小为"Hello"和"Hi".如果用户改为输入"o",则列表变为"Hello"和"Morning".
这可能吗?或者有没有其他方便的方法来查找listctrl中的项目?如果您确切地知道您搜索的内容,那么"在您键入时查找"的构建仅具有实际用途 - 在我的情况下,实际情况并非如此......
谢谢,Woodpicker
我将一些行放入列表控件中,然后相当快地更新它们 - 通常数据来自总线 - 并且整个列表闪烁很多。阻止它这样做真是太好了。
我尽可能地减少了代码,同时仍然保持我在下面的示例中所做的事情的总体外观。
lisctrl 是在 wx.Notebook 中还是在普通的 wx.Panel 中似乎并不重要,所以我把笔记本留在那里。
我已经开始研究双缓冲,但想看看是否还有其他可以先尝试的方法。
在 Windows 7 上使用 wxPython 2.8.12.1 执行此操作。XP 上也会发生。
import sys
import time
import logging
import wx
from random import randint
UPDATE_MS=10
class CanMsg(object):
def __init__(self, ID, type, len, data=None):
"""Represents a CAN message"""
self.ID=ID # 11/29-bit message identifier
self.MSGTYPE=type # Type of the message
self.LEN=len # Data Length Code of the message (0..8)
if data:
self.DATA=data
else:
self.DATA=[0,]*len
class EmulatorFrame(wx.Frame):
def __init__(self, parent, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, …Run Code Online (Sandbox Code Playgroud) 我希望选择某些行的颜色为红色而不是标准颜色(窗口上的蓝色),以便我可以指示状态.任何人都知道wxPython中是否可以这样做?
所以,我有一个包含数据行的wxPython ListCtrl.如果单击其中一行,如何使用行内容调用函数调用?
我的问题是,我们是否可以为某个项目分配/绑定某个值并隐藏该值(或者如果我们可以用另一种方式做同样的事情).
示例:假设ListCtrl上的列是"Name"和"Description":
self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
self.lc.InsertColumn(0, 'Name')
self.lc.InsertColumn(1, 'Description')
Run Code Online (Sandbox Code Playgroud)
当我添加一个项目时,我希望它们显示Name参数和描述:
num_items = self.lc.GetItemCount()
self.lc.InsertStringItem(num_items, "Randomname")
self.lc.SetStringItem(num_items, 1, "Some description here")
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是基本上为未显示的项目分配一些内容,以便稍后我可以在应用程序上访问.
所以我想添加一些未在应用程序上显示但在项目值上的内容,如:
hiddendescription = "Somerandomthing"
Run Code Online (Sandbox Code Playgroud)
还是没有看不到?好吧,我想添加一个按钮来添加一个项目与其他一些TextCtrls来设置参数,TextCtrls参数是:
"名称"
"描述"
"Hiddendescription"
然后,用户填写这些文本,然后单击按钮创建项目,我基本上只想显示名称和描述并隐藏"HiddenDescription"但是这样做我以后可以使用它.
很抱歉在这篇文章中解释了超过1次,但我想确保你理解我假装做的事情.
考虑一个简单的Win32对话框,其中包含用C++编写的listview控件(在报表模式下).在某个事件中,将删除所有项目和所有列,并创建新的列和项目.基本上,随着内容的更改,将根据内容自动生成列.
删除旧项目/列并添加新项目时,listview会像地狱一样闪烁.我尝试过WM_SETREDRAW并且LockWindowUpdate()没有改变视觉体验.
我甚至设置了扩展列表视图样式LVS_EX_DOUBLEBUFFER,这根本没有帮助.
父对话框已WS_CLIPCHILDREN设置.
有关如何使用尽可能少的闪烁工作的任何建议吗?我正在考虑使用两个列表视图,交替可见性,使用隐藏的一个作为后台缓冲区,但这听起来像是一种矫枉过正.必须有一个简单的方法.