前提・実現したいこと
現在、wxpythonでultimatelistctrlを使ったGUIを作成しています。
繰り返しでultimatelistctrlのitemに別々の画像を挿入しようとしているのですが、最後にimagelistに加えた画像だけが挿入されてしまいます。どのようにすればよいかご教授いただきたく存じます。
また、チェックボックスと画像をカラムに中央揃え配置する方法についてもお願い致します。
以上の2点についてよろしくお願い致します。
該当のソースコード
python
1import wx 2from wx.lib.agw import ultimatelistctrl as ULC 3import wx.adv 4import os 5 6class MainPanel(wx.Panel): 7 def __init__(self, parent): 8 wx.Panel.__init__(self, parent) 9 10 # self.aquamarine = wx.Colour("LIGHT BLUE) 11 12 agwStyle = ( 13 ULC.ULC_HAS_VARIABLE_ROW_HEIGHT | wx.LC_REPORT | wx.LC_SINGLE_SEL) 14 15 self.ul = ULC.UltimateListCtrl( 16 self, agwStyle=agwStyle) 17 18 sizer = wx.BoxSizer(wx.VERTICAL) 19 sizer.Add(self.ul, 1, wx.EXPAND | wx.ALL, 5) 20 self.SetSizer(sizer) 21 22 mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT 23 24 def gen_column_header(name, kind=0, mask=mask): 25 info = ULC.UltimateListItem() 26 info._mask = mask 27 info._format = wx.LIST_FORMAT_CENTER 28 info._kind = kind 29 info._text = name 30 info._font = wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "") 31 return info 32 33 self.item = ["撮影日", "写真"] 34 self.width = [150,300] 35 36 for i in range(len(self.item)): 37 self.ul.InsertColumnInfo(i, gen_column_header(self.item[i], 1, mask | ULC.ULC_MASK_FONT)) 38 self.ul.SetColumnWidth(i, self.width[i]) 39 40 photolist=["a.png","b.png"] 41 colorlist=["LIGHT BLUE","LIGHT GREY"] 42 43 for i in range(2): 44 self.ul.InsertStringItem(i, "") 45 self.checkBox = wx.CheckBox(self.ul, wx.ID_ANY, "",(0,0), (-1,-1), 0, name=self.item[0]) 46 self.checkBox.SetLabel("撮影日") 47 self.checkBox.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "")) 48 self.ul.SetItemBackgroundColour(i, wx.Colour(colorlist[i])) 49 self.checkBox.SetBackgroundColour(wx.Colour(colorlist[i])) 50 self.ul.SetItemWindow(i, 0, self.checkBox, expand=True) 51 imagelist = wx.ImageList(300, 200) 52 imageidx = imagelist.Add(wx.Icon(photolist[i], wx.BITMAP_TYPE_ANY)) 53 self.ul.AssignImageList(imagelist, wx.IMAGE_LIST_SMALL) 54 self.ul.SetItemColumnImage(i,1,imageidx) 55 self.ul.SetItemBackgroundColour(i, wx.Colour(colorlist[i])) 56 57 def onClick(self, event): 58 img = Image.open(self.file) 59 img.show() 60 61class MainFrame(wx.Frame): 62 def __init__(self): 63 wx.Frame.__init__(self, None, title="frame", size=(500, 550)) 64 MainPanel(self) 65 self.Show() 66 67 68if __name__ == "__main__": 69 app = wx.App(False) 70 frame = MainFrame() 71 app.MainLoop()
補足情報(FW/ツールのバージョンなど)
Python 3.8.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/19 07:42