[IronPython] DataGridView

J. de Hooge info at geatec.com
Fri Dec 23 11:35:46 CET 2005


Jeff,

 

I would not know any examples of using the DataGridView in Python.

But I did use many other view classes in  IronPython, since I've been
working on a GUI framework in IP.

What I used as doc was: .NET SDK 2.0 documentation and Python 2.4 Manuals.

 

For me that worked fine.

There's remarkably little difference between using them from C# and from IP,
even at dealing with event handlers, properties and .NET datastructures.

 

Since there probably aren't too many examples around yet, here's a fragment
of code to illustrate this:

 

-          Instantiate a TreeView

-          Add an event handler to its MouseUp event to show a
ContextMenuStrip that was built up by a widget creation function defined
elsewhere

 

from sys import *

LoadAssemblyByName("System.Windows.Forms")

from System.Windows import Forms

.

class .:                          

       def createWidget (self):

              .

self.widget = Forms.TreeView ()   # Instantiate .NET class

self.widget.Dock = Forms.DockStyle.Fill  # Set properties, just like you
would in C#

self.widget.HideSelection = False # Same

self.widget.AllowDrop = True      # Same

.

if self.contextMenuView:

self.widget.ContextMenuStrip = self.contextMenuView.createWidget ()  # Get
populated context menu strip

              self.widget.MouseUp += lambda sender, event: event.Button !=
Forms.MouseButtons.Right or sender.ContextMenuStrip.Show (sender,
event.Location)      # Add event handler to show context menu at mouse up

 

.NET datastructures can usually be betraversed with Python iterators without
any special tricks:

 

       def bareWrite (self):

              expansionDictionary = {}

              self.fillExpansionDictionary (self.widget.Nodes, (),
expansionDictionary)  # Will traverse Nodes, see function def below

              self.widget.Nodes.Clear () # Call member, just like you would
in C#

              self.writeTree (self.treeNode.new, self.widget.Nodes, (),
expansionDictionary) # Pass Forms.TreeView.Nodes property as param, just
like in C#

 

       def fillExpansionDictionary (self, treeViewNodes, hashPath,
expansionDictionary):

                 for treeViewNode in treeViewNodes:  # Treat treeViewNodes
as an ordinary Python iterable datastructure, even though it is a reference
to Forms.TreeView.Nodes, an instance of public class TreeNodeCollection:
IList, ICollection, IEnumerable

 

                     if self.transformer:

                           newHashPath = hashPath + (treeViewNode.Tag, )   #
Use .NET properties just as you would in C#

                     else:

                           newHashPath = hashPath + (treeViewNode.Text,


                     expansionDictionary [newHashPath] =
treeViewNode.IsExpanded   # Yet another property

                     self.fillExpansionDictionary (treeViewNode.Nodes,
newHashPath, expansionDictionary)

 

Probably you just should start experimenting.

What helped me tremendously  is the fact that IP is interpreted, rather than
compiled.

I can experiment in seconds, even from the command line, although I prefer
assembling small code fragments in an editor to try out stuff.

 

Currently I am using IP 0.9.5 as interpreter, running IP 0.9.6 beforehand as
a syntax checker, since that version has improved error reporting but some
run time issues.

(for wich a fix is already on this mailing list (thanks Dino) but I haven't
yet found the time to try this out)

 

Hope this helps

Jacques de Hooge

info at geatec.com

 

 

 

 

 

 

 

 

-----Oorspronkelijk bericht-----
Van: users-bounces at lists.ironpython.com
[mailto:users-bounces at lists.ironpython.com] Namens jeff sacksteder
Verzonden: Thursday, December 22, 2005 4:14 PM
Aan: s.kobalczyk at softwaremind.pl; Discussion of IronPython
Onderwerp: Re: [IronPython] DataGridView

 

I'm sorry, I meant in Python. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20051223/037cd6c3/attachment.html>


More information about the Ironpython-users mailing list