у wx.TreeCtrl есть метод UnselectAll. вообще он снимает выделение со всех элементов, но первый элемент все равно остается выделенным…
вот мой код
# -*- coding: cp1251 -*-
import wx
class TreeGroup(wx.TreeCtrl):
def __init__(self, parent):
wx.TreeCtrl.__init__(self, parent, style=wx.TR_DEFAULT_STYLE|wx.TR_HIDE_ROOT|wx.TR_MULTIPLE)
root_id = self.AddRoot('root')
self.AppendItem(root_id, 'grup1')
self.AppendItem(root_id, 'grup2')
self.AppendItem(root_id, 'grup3')
self.UnselectAll()
class MultiChoiceGroup(wx.Dialog):
""" диалог выбора групп для фильтрации списка пользователей
"""
def __init__(self):
wx.Dialog.__init__(self, None, title='Выбор групп', size=(300, 400), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
# Создать панель и дерево
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(wx.StaticText(self, label='Отметьте группы по которым установить фильтр'), flag=wx.ALL, border=10)
################################################################
self.tree = TreeGroup(self)
################################################################
sizer.Add(self.tree, proportion=1, flag=wx.EXPAND|wx.ALL, border=10)
self.SetSizer(sizer)
hsizer = wx.BoxSizer(wx.HORIZONTAL)
self.but_ok = wx.Button(self, label='Ok')
self.but_cancel = wx.Button(self, label='Cancel')
hsizer.Add(self.but_ok, flag=wx.RIGHT, border=5)
hsizer.Add(self.but_cancel)
sizer.Add(hsizer, flag=wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, border=10)
#
self.but_ok.Bind(wx.EVT_BUTTON, self.OnOk)
self.but_cancel.Bind(wx.EVT_BUTTON, self.OnCancel)
acceltbl = wx.AcceleratorTable([
(wx.ACCEL_NORMAL, wx.WXK_RETURN, self.but_ok.GetId()),
(wx.ACCEL_NORMAL, wx.WXK_ESCAPE, self.but_cancel.GetId()),
])
self.SetAcceleratorTable(acceltbl)
def OnOk(self, evt):
self.EndModal(wx.ID_OK)
def OnCancel(self, evt):
self.EndModal(wx.ID_CANCEL)
class App(wx.App):
def __init__(self):
wx.App.__init__(self, True, 'log.txt')
dlg = MultiChoiceGroup()
dlg.ShowModal()
dlg.Destroy()
if __name__ == "__main__":
app = App()
app.MainLoop()
И еще один вопрос, но не столь важный:
В AcceleratorTable просписана клавиша ESCAPE, но диалог на нее не реагирует, с чем это связано и как можно исправить? :)
P.S. тег
скрипт почему то не принял..