📄 customtreectrl.py
字号:
self.okbutton.SetDefault()
def __do_layout(self):
mainsizer = wx.BoxSizer(wx.VERTICAL)
bottomsizer = wx.BoxSizer(wx.HORIZONTAL)
topsizer = wx.BoxSizer(wx.HORIZONTAL)
rightsizer = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
label_1 = wx.StaticText(self, -1, "Please Choose One Of These Sets Of Icons:")
label_1.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
mainsizer.Add(label_1, 0, wx.ALL|wx.ADJUST_MINSIZE, 10)
topsizer.Add(self.listicons, 0, wx.ALL|wx.EXPAND|wx.ADJUST_MINSIZE, 5)
label_2 = wx.StaticText(self, -1, "Collapsed")
sizer_1.Add(label_2, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_1.Add((20, 20), 1, wx.ALIGN_RIGHT|wx.ADJUST_MINSIZE, 0)
sizer_1.Add(self.bitmap_plus, 1, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_1, 0, wx.EXPAND, 0)
label_3 = wx.StaticText(self, -1, "Expanded")
sizer_2.Add(label_3, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_2.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
sizer_2.Add(self.bitmap_minus, 1, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_2, 0, wx.EXPAND, 0)
topsizer.Add(rightsizer, 0, wx.ALL|wx.EXPAND, 5)
mainsizer.Add(topsizer, 1, wx.EXPAND, 0)
bottomsizer.Add(self.okbutton, 0, wx.ALL|wx.ADJUST_MINSIZE, 20)
bottomsizer.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
bottomsizer.Add(self.cancelbutton, 0, wx.ALL|wx.ADJUST_MINSIZE, 20)
mainsizer.Add(bottomsizer, 0, wx.EXPAND, 0)
self.SetAutoLayout(True)
self.SetSizer(mainsizer)
mainsizer.Fit(self)
mainsizer.SetSizeHints(self)
self.Layout()
def OnListBox(self, event):
selection = self.listicons.GetSelection()
bitmap_plus = opj("bitmaps/plus" + str(selection+1) + ".ico")
bitmap_minus = opj("bitmaps/minus" + str(selection+1) + ".ico")
bitmap_plus = wx.Image(bitmap_plus, wx.BITMAP_TYPE_ICO)
bitmap_plus.Rescale(24, 24)
bitmap_plus = bitmap_plus.ConvertToBitmap()
bitmap_minus = wx.Image(bitmap_minus, wx.BITMAP_TYPE_ICO)
bitmap_minus.Rescale(24, 24)
bitmap_minus = bitmap_minus.ConvertToBitmap()
self.bitmap_plus.SetBitmap(bitmap_plus)
self.bitmap_minus.SetBitmap(bitmap_minus)
self.bitmap_plus.Refresh()
self.bitmap_minus.Refresh()
event.Skip()
def OnOk(self, event):
selection = self.listicons.GetSelection()
self.parent.SetTreeButtons(selection)
self.Destroy()
event.Skip()
def OnCancel(self, event):
self.Destroy()
event.Skip()
#---------------------------------------------------------------------------
# Just A Dialog To Select Tree Check/Radio Item Icons
#---------------------------------------------------------------------------
class CheckDialog(wx.Dialog):
def __init__(self, parent=None, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.listicons = wx.ListBox(self, -1, choices=["Set 1", "Set 2"], style=wx.LB_SINGLE)
bitmap_check = wx.Bitmap(opj("bitmaps/checked.ico"), wx.BITMAP_TYPE_ICO)
bitmap_uncheck = wx.Bitmap(opj("bitmaps/notchecked.ico"), wx.BITMAP_TYPE_ICO)
bitmap_flag = wx.Bitmap(opj("bitmaps/flagged.ico"), wx.BITMAP_TYPE_ICO)
bitmap_unflag = wx.Bitmap(opj("bitmaps/notflagged.ico"), wx.BITMAP_TYPE_ICO)
self.bitmap_check = wx.StaticBitmap(self, -1, bitmap_check)
self.bitmap_uncheck = wx.StaticBitmap(self, -1, bitmap_uncheck)
self.bitmap_flag = wx.StaticBitmap(self, -1, bitmap_flag)
self.bitmap_unflag = wx.StaticBitmap(self, -1, bitmap_unflag)
self.okbutton = wx.Button(self, wx.ID_OK)
self.cancelbutton = wx.Button(self, wx.ID_CANCEL)
self.parent = parent
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON, self.OnOk, self.okbutton)
self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelbutton)
self.Bind(wx.EVT_LISTBOX, self.OnListBox, self.listicons)
def __set_properties(self):
self.SetTitle("Check/Radio Icon Selector")
self.listicons.SetSelection(0)
self.okbutton.SetDefault()
def __do_layout(self):
mainsizer = wx.BoxSizer(wx.VERTICAL)
bottomsizer = wx.BoxSizer(wx.HORIZONTAL)
topsizer = wx.BoxSizer(wx.HORIZONTAL)
rightsizer = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
label_1 = wx.StaticText(self, -1, "Please Choose One Of These Sets Of Icons:")
label_1.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
mainsizer.Add(label_1, 0, wx.ALL|wx.ADJUST_MINSIZE, 10)
topsizer.Add(self.listicons, 0, wx.ALL|wx.EXPAND|wx.ADJUST_MINSIZE, 5)
label_2 = wx.StaticText(self, -1, "Checked")
sizer_1.Add(label_2, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_1.Add((20, 20), 1, wx.ALIGN_RIGHT|wx.ADJUST_MINSIZE, 0)
sizer_1.Add(self.bitmap_check, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_1, 0, wx.EXPAND, 0)
label_3 = wx.StaticText(self, -1, "Not Checked")
sizer_2.Add(label_3, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_2.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
sizer_2.Add(self.bitmap_uncheck, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_2, 0, wx.EXPAND, 0)
label_4 = wx.StaticText(self, -1, "Flagged")
sizer_3.Add(label_4, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_3.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
sizer_3.Add(self.bitmap_flag, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_3, 0, wx.EXPAND, 0)
label_5 = wx.StaticText(self, -1, "Not Flagged")
sizer_4.Add(label_5, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
sizer_4.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
sizer_4.Add(self.bitmap_unflag, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 10)
rightsizer.Add(sizer_4, 0, wx.EXPAND, 0)
topsizer.Add(rightsizer, 0, wx.ALL|wx.EXPAND, 5)
mainsizer.Add(topsizer, 1, wx.EXPAND, 0)
bottomsizer.Add(self.okbutton, 0, wx.ALL|wx.ADJUST_MINSIZE, 20)
bottomsizer.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
bottomsizer.Add(self.cancelbutton, 0, wx.ALL|wx.ADJUST_MINSIZE, 20)
mainsizer.Add(bottomsizer, 0, wx.EXPAND, 0)
self.SetAutoLayout(True)
self.SetSizer(mainsizer)
mainsizer.Fit(self)
mainsizer.SetSizeHints(self)
self.Layout()
def OnListBox(self, event):
selection = self.listicons.GetSelection()
if selection == 0:
bitmap_check = opj("bitmaps/checked.ico")
bitmap_uncheck = opj("bitmaps/notchecked.ico")
bitmap_flag = opj("bitmaps/flagged.ico")
bitmap_unflag = opj("bitmaps/notflagged.ico")
else:
bitmap_check = opj("bitmaps/aquachecked.ico")
bitmap_uncheck = opj("bitmaps/aquanotchecked.ico")
bitmap_flag = opj("bitmaps/aquaflagged.ico")
bitmap_unflag = opj("bitmaps/aquanotflagged.ico")
bitmap_check = wx.Bitmap(bitmap_check, wx.BITMAP_TYPE_ICO)
bitmap_uncheck = wx.Bitmap(bitmap_uncheck, wx.BITMAP_TYPE_ICO)
bitmap_flag = wx.Bitmap(bitmap_flag, wx.BITMAP_TYPE_ICO)
bitmap_unflag = wx.Bitmap(bitmap_unflag, wx.BITMAP_TYPE_ICO)
self.bitmap_uncheck.SetBitmap(bitmap_uncheck)
self.bitmap_check.SetBitmap(bitmap_check)
self.bitmap_unflag.SetBitmap(bitmap_unflag)
self.bitmap_flag.SetBitmap(bitmap_flag)
self.bitmap_check.Refresh()
self.bitmap_uncheck.Refresh()
self.bitmap_flag.Refresh()
self.bitmap_unflag.Refresh()
event.Skip()
def OnOk(self, event):
selection = self.listicons.GetSelection()
self.parent.SetCheckRadio(selection)
self.Destroy()
event.Skip()
def OnCancel(self, event):
self.Destroy()
event.Skip()
#---------------------------------------------------------------------------
# Just A Dialog To Select Tree Items Icons
#---------------------------------------------------------------------------
class TreeIcons(wx.Dialog):
def __init__(self, parent=None, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE, oldpen=None,
bitmaps=None):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.bitmaps = [None, None, None, None]
empty = wx.EmptyBitmap(16, 16)
self.parent = parent
self.bitmaps[0] = wx.StaticBitmap(self, -1, empty)
self.combonormal = wx.ComboBox(self, -1, choices=ArtIDs, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.bitmaps[1] = wx.StaticBitmap(self, -1, empty)
self.comboselected = wx.ComboBox(self, -1, choices=ArtIDs, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.bitmaps[2] = wx.StaticBitmap(self, -1, empty)
self.comboexpanded = wx.ComboBox(self, -1, choices=ArtIDs, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.bitmaps[3] = wx.StaticBitmap(self, -1, empty)
self.comboselectedexpanded = wx.ComboBox(self, -1, choices=ArtIDs, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.okbutton = wx.Button(self, wx.ID_OK)
self.cancelbutton = wx.Button(self, wx.ID_CANCEL)
self.combonormal.SetSelection(bitmaps[0] >= 0 and bitmaps[0]+1 or 0)
self.comboselected.SetSelection(bitmaps[1] >= 0 and bitmaps[1]+1 or 0)
self.comboexpanded.SetSelection(bitmaps[2] >= 0 and bitmaps[2]+1 or 0)
self.comboselectedexpanded.SetSelection(bitmaps[3] >= 0 and bitmaps[3]+1 or 0)
self.GetBitmaps(bitmaps)
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_COMBOBOX, self.OnComboNormal, self.combonormal)
self.Bind(wx.EVT_COMBOBOX, self.OnComboSelected, self.comboselected)
self.Bind(wx.EVT_COMBOBOX, self.OnComboExpanded, self.comboexpanded)
self.Bind(wx.EVT_COMBOBOX, self.OnComboSelectedExpanded, self.comboselectedexpanded)
self.Bind(wx.EVT_BUTTON, self.OnOk, self.okbutton)
self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelbutton)
def __set_properties(self):
self.SetTitle("Item Icon Selector")
self.okbutton.SetDefault()
def __do_layout(self):
mainsizer = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
gridsizer = wx.FlexGridSizer(4, 3, 5, 5)
label_1 = wx.StaticText(self, -1, "Please Choose The Icons For This Item (All Are Optional):")
label_1.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
mainsizer.Add(label_1, 0, wx.ALL|wx.ADJUST_MINSIZE, 10)
label_2 = wx.StaticText(self, -1, "TreeIcon_Normal:")
gridsizer.Add(label_2, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.bitmaps[0], 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.combonormal, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
label_3 = wx.StaticText(self, -1, "TreeIcon_Selected:")
gridsizer.Add(label_3, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.bitmaps[1], 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.comboselected, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
label_4 = wx.StaticText(self, -1, "TreeIcon_Expanded:")
gridsizer.Add(label_4, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.bitmaps[2], 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.comboexpanded, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
label_5 = wx.StaticText(self, -1, "TreeIcon_SelectedExpanded:")
gridsizer.Add(label_5, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.bitmaps[3], 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
gridsizer.Add(self.comboselectedexpanded, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
gridsizer.AddGrowableCol(0)
gridsizer.AddGrowableCol(1)
gridsizer.AddGrowableCol(2)
mainsizer.Add(gridsizer, 0, wx.ALL|wx.EXPAND, 5)
sizer_2.Add(self.okbutton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 20)
sizer_2.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
sizer_2.Add(self.cancelbutton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 20)
mainsizer.Add(sizer_2, 1, wx.EXPAND, 0)
self.SetAutoLayout(True)
self.SetSizer(mainsizer)
mainsizer.Fit(self)
mainsizer.SetSizeHints(self)
self.Layout()
self.Centre()
def OnComboNormal(self, event):
input = event.GetSelection()
self.GetBitmap(input, 0)
event.Skip()
def OnComboSelected(self, event):
input = event.GetSelection()
self.GetBitmap(input, 1)
event.Skip()
def OnComboExpanded(self, event):
input = event.GetSelection()
self.GetBitmap(input, 2)
event.Skip()
def OnComboSelectedExpanded(self, event):
input = event.GetSelection()
self.GetBitmap(input, 3)
event.Skip()
def OnOk(self, event):
bitmaps = [-1, -1, -1, -1]
normal = self.combonormal.GetSelection()
selected = self.comboselected.GetSelection()
expanded = self.comboexpanded.GetSelection()
selexp = self.comboselectedexpanded.GetSelection()
bitmaps = [(normal > 0 and normal or -1), (selected > 0 and selected or -1),
(expanded > 0 and expanded or -1), (selexp > 0 and selexp or -1)]
newbitmaps = []
for bmp in bitmaps:
if bmp > 0:
newbitmaps.append(bmp-1)
else:
newbitmaps.append(bmp)
self.parent.SetNewIcons(newbitmaps)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -