wxPython控制項學習之UltimateListCtrl空間中使用ComboBox時,該控制項一直在重繪的問題

來源:互聯網
上載者:User

 

例子:

#-*- coding: UTF-8 -*-#-------------------------------------------------------------------------------# Name:        模組mainFrame# Purpose:     應用程式的主介面## Author:      ankier## Created:     16-12-2012# Copyright:   (c) ankier 2012# Licence:     <your licence>#-------------------------------------------------------------------------------try:    from agw import floatspin as FSexcept ImportError: # if it's not there locally, try the wxPython lib.    import wx.lib.agw.floatspin as FStry:    from agw import ultimatelistctrl as ULCexcept ImportError: # if it's not there locally, try the wxPython lib.    from wx.lib.agw import ultimatelistctrl as ULC        import wximport sys## @detail MainFrame主介面視窗類別class MainFrame(wx.Frame):    def __init__(self):        #重新定向wxpython的輸出輸入和錯誤輸出到系統標準輸入輸出        sys.stdin = sys.__stdin__        sys.stdout = sys.__stdout__        sys.stderr = sys.__stderr__        wx.Frame.__init__(self, None, wx.ID_ANY,  'Ultimate list ctrl demo', pos=wx.DefaultPosition,            size=(800, 600), style=wx.DEFAULT_FRAME_STYLE)        self.CreateStatusBar()                panel = wx.Panel(self, -1)                   box = wx.FlexGridSizer(10, 2, 5, 5)                button = wx.Button(panel, -1, 'Add')        box.Add(button, 0, wx.ALIGN_CENTRE)        button.Bind(wx.EVT_BUTTON, self.__OnAddClicked)                self.listCtrls = ULC.UltimateListCtrl(panel, -1, size =(200, 100), style = ULC.ULC_MASK_TYPE, agwStyle = ULC.ULC_REPORT|ULC.ULC_HAS_VARIABLE_ROW_HEIGHT|ULC.ULC_NO_FULL_ROW_SELECT)        self.listCtrls.InsertColumn(0, 'Name', ULC.ULC_FORMAT_CENTRE)        self.listCtrls.InsertColumn(1, 'Selection', ULC.ULC_FORMAT_CENTRE)        box.Add(self.listCtrls, 0, wx.ALIGN_CENTRE)        panel.SetSizerAndFit(box)        def __OnAddClicked(self, event):        index = self.listCtrls.InsertStringItem(sys.maxint, 'name 1')                panel = wx.Panel(self.listCtrls, -1)        sizer = wx.BoxSizer(wx.VERTICAL)        cbb = wx.ComboBox(panel, -1, value = '1', choices = ['1', '2', '3', '4', '5'], style = wx.CB_DROPDOWN|wx.TE_PROCESS_ENTER)        sizer.Add(cbb, 1, wx.EXPAND)        panel.SetSizer(sizer)                #cbb =  wx.Button(self.listCtrls, -1, 'Add')        cbb.Bind(wx.EVT_PAINT, self.__OnPaint)        self.listCtrls.SetItemWindow(index, 1, panel, expand = True)        self.listCtrls.Update()        def __OnPaint(self, event):        event.Skip()                                                           

解決方案如代碼中,SetItemWindow(),添加control到列中的時候,可以先用wx.Panel做位其父控制項。這樣control不會被一直重繪。我在項目中用到ComboBox時候,遇到了這個情況。其他控制項暫時沒有遇到過。wxPython 還是有許多問題的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.