首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColourPickerCtrl in a ListCtrl

ColourPickerCtrl in a ListCtrl
EN

Stack Overflow用户
提问于 2015-12-22 12:18:08
回答 1查看 274关注 0票数 1

Problem:我有一个wx.ListCtrl,其中包含一个颜色选择器。因此,给出如下图像中的列表:

我想得到的是这样的东西:

其中黑方元素是wx.ColorPickerCtrl。我查看过ListCtrl方法,但什么也找不到。我也看过UltimateListCtrl,但也没有找到任何方法。

到目前为止,这是我的代码:

代码语言:javascript
复制
import wx
import wx.xrc


class MyFrame1 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

        bSizer2 = wx.BoxSizer( wx.VERTICAL )

        self.m_panel2 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        bSizer3 = wx.BoxSizer( wx.VERTICAL )

        self.m_listCtrl9 = wx.ListCtrl( self.m_panel2, style=wx.LC_REPORT| wx.LC_HRULES | wx.LC_SINGLE_SEL | wx.BORDER_SUNKEN)
        self.m_listCtrl9.InsertColumn(0, 'Something')
        self.m_listCtrl9.InsertColumn(1, 'Description')
        self.m_listCtrl9.InsertColumn(2, 'Color ', width=125)

        for i in range(0,20):
            self.m_listCtrl9.InsertStringItem(0, "212343" + str(i))


        bSizer3.Add( self.m_listCtrl9, 0, wx.ALL|wx.EXPAND, 5 )

        self.m_staticline4 = wx.StaticLine( self.m_panel2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer3.Add( self.m_staticline4, 0, wx.EXPAND |wx.ALL, 5 )

        self.m_panel2.SetSizer( bSizer3 )
        self.m_panel2.Layout()
        bSizer3.Fit( self.m_panel2 )
        bSizer2.Add( self.m_panel2, 1, wx.EXPAND |wx.ALL, 5 )

        self.SetSizer( bSizer2 )
        self.Layout()

        self.Centre( wx.BOTH )

def main():

    app = wx.App(False)
    f = MyFrame1(None)
    f.Show()
    app.MainLoop()    


if __name__ == '__main__':
    main()

我在想,也许有一个显而易见的方法,因为这似乎很简单,但我不知道如何做,有什么建议吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 12:58:06

你当然需要UltimateListCtrl来达到你想要的行为。它有一个SetItemWindow方法,它可以向ListCtrl插入一个控件。要使其工作,请确保UltimateListCtrl的样式包括wx.LC_REPORTulc.ULC_HAS_VARIABLE_ROW_HEIGHT。这应该能起作用:

代码语言:javascript
复制
import wx.lib.agw.ultimatelistctrl as ulc

class MyFrame1 ( wx.Frame ):
    def __init__( self, parent ):
        ...
        self.m_listCtrl9 = ulc.UltimateListCtrl( self.m_panel2, agwStyle=wx.LC_REPORT|ulc.ULC_HAS_VARIABLE_ROW_HEIGHT)
        ...
        self.color_pickers = []
        for i in range(20):
            idx = self.m_listCtrl9.InsertStringItem(0, "212343" + str(i))
            color_picker = wx.ColourPickerCtrl(self.m_listCtrl9, -1)
            self.m_listCtrl9.SetItemWindow(idx, 2, color_picker)
            self.color_pickers.append(color_picker)

这将产生以下结果:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34415773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档