WPF Tree View
import clr clr.AddReference("PresentationFramework") clr.AddReference("PresentationCore"); clr.AddReference('System.Data') clr.AddReference('System.Windows.Forms') import System from System import * from System.Data import * from System.Type import GetType from System.Threading.Tasks import Task from System.Windows import * from System.Windows.Controls import * from System.Windows.Controls.Primitives import * from System.Windows.Media import * from System.Windows.Media.Imaging import * from System.Windows.Media.Effects import * from System.Windows.Shapes import Rectangle from System.Windows.Data import Binding from System.Windows.Ink import Stroke from System.Windows.Forms import ( FolderBrowserDialog, DialogResult ) from Microsoft.Win32 import ( OpenFileDialog, SaveFileDialog ) import ctrl class WpfTree(ctrl.WpfCtrl): def __init__(self,name="root",handler=None,**kwargs): self.root = TreeViewItem() self.root.Header = name self.root.IsExpanded = True self.ctrl = TreeView() self.ctrl.Items.Add(self.root) self.init(**kwargs) if handler: self.ctrl.SelectedItemChanged += handler def add_root_item(self,label): return self.add_item(label) def add_item(self,label,parent=None): item = TreeViewItem() item.Header = label item.IsExpanded = True if parent: parent.Items.Add(item) else: self.root.Items.Add(item) return item def get_selected_item(self): return self.ctrl.SelectedItem def get_selected_item_text(self): return self.ctrl.SelectedItem.Header.ToString() def get_selected_item_path(self,delim=""): item = self.ctrl.SelectedItem return self.get_item_path(item,delim) def get_item_path(self,item,delim=""): path = item.Header.ToString() while type(item.Parent) == TreeViewItem: item = item.Parent path = item.Header.ToString() + delim + path return path def get_parent_item(self,item): return item.Parent def get_item_value(self,item): return item.Header.ToString() if __name__ == "__main__": global tree_ctrl def tree_handler(s,e): print( s.SelectedItem.Header.ToString(), tree_ctrl.get_selected_item_text() ) def button_handler(s,e): print( tree_ctrl.get_selected_item_path('/')) import win app = win.Win("Button Demo",320,240) tree_ctrl = WpfTree(handler=tree_handler) item = tree_ctrl.add_root_item("Item1") tree_ctrl.add_item("Item1-1",item) tree_ctrl.add_item("Item1-2",item) item = tree_ctrl.add_root_item("Item2") tree_ctrl.add_item("Item2-1",item) tree_ctrl.add_item("Item2-2",item) app.set_content(tree_ctrl.ctrl) b = Button(); b.Content = "Button"; b.Click += button_handler app.add_statusbar(b) app.run()
댓글 없음:
댓글 쓰기