Michael Foord wrote:
Kristian Jaksch wrote:
*
def inputBox_KeyDown(s, e):
 key = e.Key.value__
 result = root.inputBox.Text
 if key == 3: #If 'Enter' key is pressed
      try:
          try:
              root.message.Text = eval(result)
          except SyntaxError:
             exec result in context
      except Exception, e:
          print 'Unhandled exception', e
      root.inputBox.Text = "" #Clearing inputBox*

But this creates a fixed size matrix and I still get an exception if I type for example *m=Matrix(2,2)* in the 'inputBox'. I want to make this as general as possible. Can't I place everything that is imported from 'Mapack' into the 'context' dictionary together with whatever the user types in besides of that?

You can. I'll give you a clue - import * makes it harder. Try importing Mapack and then it will be easier to put things from the module into the dictionary.

Hmmm - actually you could exec the import * inside the context to populate it.

Michael
There are several more classes that must be placed in 'context'. It would be nice to have the user type *n=m.Transpose()* or whatever method he wants to get out from the 'Mapack' library and then let the code be executed correctly.

Does that not work already - it should do.

Michael

Thanks very much!


2008/12/16 Michael Foord <[email protected] <mailto:[email protected]>>:
> xkrja wrote:
>>
>> Thanks!
>>
>> I'm using Ironpython with Silverlight so I can't get access to
>> Windows.Forms
>>  >
> Ah - in which case it probably lives in System.Windows.Input
>>
>> Please bear with me :-) New stuff's showing up all the time. The solution
>> you proposed worked but there must be something I don't get with the
>> scope.
>> Please look at my snippet below:
>>
>>  >
> The advantage of a specific context is that you control what objects the > code has access to. Try setting the Matrix object into the dictionary with
> the key 'm' and your code should have access to it.
>
> Michael
>
>> import clr, sys
>> clr.AddReference("Mapack, Version=1.0.0.0, Culture=neutral,
>> PublicKeyToken=null")
>> from Mapack import *
>> .
>> .
>> .
>>
>> def inputBox_KeyDown(s, e):
>>    key = e.Key.value__
>>  result = root.inputBox.Text
>>  if key == 3: #If 'Enter' key is pressed
>>       try:
>>           try:
>>               root.message.Text = eval(result)
>>           except SyntaxError:
>>              exec result in context
>>       except Exception, e:
>>           print 'Unhandled exception', e
>> root.inputBox.Text = "" m = Matrix(2,2) >> #NOTICE: If I hard code this
>> definition in the function it works
>>       print m                            #but if I try to type
>> m=Matrix(2,2) in inputBox it says:
>>                                            #"Matrix is not defined"
>>
>>
>> I can create an object of the Matrix()-class if I code it straight into
>> the
>> function as shown in my snippet above but I can't type m=Matrix(2,2) in
>> the
>> 'inputBox' and then execute it. Then I get an exception: "Matrix is not
>> defined".
>> How can I work around this?
>>
>> Thanks very much!
>>  >>
>> Michael Foord-5 wrote:
>>  >>>
>>> Oh - and Windows Forms has a Keys enumeration so that you don't have to
>>> rely on the underlying value of the event key property.
>>>
>>> from System.Windows.Forms import Keys
>>>
>>> if e.Key == Keys.Enter:
>>>
>>> (or something like that - check out the MSDN documentation for the
>>> enumeration.)
>>>
>>> Michael Foord
>>>
>>>
>>>    >>
>>  >
>
> --
> http://www.ironpythoninaction.com/
> http://www.voidspace.org.uk/blog
>
>
> _______________________________________________
> Users mailing list
> [email protected] <mailto:[email protected]>
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>

------------------------------------------------------------------------

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to