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()
댓글 없음:
댓글 쓰기