在silverlight 使用 IronPython

来源:互联网 发布:python 临时文件夹 编辑:程序博客网 时间:2024/05/16 10:35
     在silverlight 中是支持IronRUBY,IronPython,Managed JScript开发的,只可惜目前我还
没找到什么特别简单易用的插件在VS上能够直接进行开发的,所以在写本文这个DEMO时,我又打
开了“记事本”,开始写IronPython代码。

      从Silverlight SDK中有相应的开发文章和代码,虽然我本身通过它所提供的代码进行编译并运
行成功。但我总想着在里面多写一些代码,以便了解一下
IronPython。但这一写才发现了一些问题,
其中包括:

    1. 输入框不支持中文(但可以粘帖中文, 但代码中写入中文显示时会出现乱码)
    2. 对有事件绑定的控件如果在XAML中声明会报错
    3. 注释如果是相应事件中唯一的代码时会报错
   
    后来在网上去找解决方案,发现【孟子E章】在这篇文篇:
   
    Silverlight 2学习教程(四):Chiron.exe:Silverlight 2打包和动态语言部署工具 
   
    也提到了相似的问题,看来不是我一个人的问题了。好在我找到了加入Button的方式。
   
    好了,下面就是相应的XAML代码(app.xaml,注意里面的控件不要绑定事件,事件会在py
文件中进行绑定):
   
<UserControl xmlns="http://schemas.microsoft.com/client/2007"
 xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
 x:Class
="System.Windows.Controls.UserControl" x:Name="Page" Width="400" Height="300">
    
<Grid x:Name="LayoutRoot" Background="White">
      
<Canvas Canvas.Top="20">
          
<TextBlock Canvas.Top="10" Canvas.Left="20">please input you name</TextBlock>
          
<TextBox x:Name="UserInput" Width="200" Height="30" Canvas.Top="40" Canvas.Left="20">
          </
TextBox>
          
<TextBlock x:Name="Msg" Canvas.Top="90" Canvas.Left="20" Foreground="Navy" FontSize="48" >
          </
TextBlock>
          
<Button x:Name="MsgButton" Canvas.Top="130" Canvas.Left="20" Content="Hello"></Button>
      
</Canvas>
    
</Grid>
</UserControl>

   
    下面就是相应的pathon代码(app.py):
   
#名空间引用
from System.Windows import Application
from System.Windows.Controls import *
from System.Windows.Browser import *

#类外部事件声明
def handler1(sender, eventArgs):
    sender.Opacity 
/= 2

class App:
    
def __init__(self):
        self.scene 
= Application.Current.LoadRootVisual(UserControl(), "app.xaml")

    
def start(self):
        
# TODO: replace this with your application start logic
        self.scene.UserInput.Text = "please input your name."
        
#在此进行类外部事件绑定
        self.scene.UserInput.MouseLeftButtonUp += handler1
        
#在此进行类内部事件绑定
        self.scene.UserInput.MouseLeftButtonUp += self.handler2
        
#在此进行Button事件绑定
        self.scene.MsgButton.Click += self.MsgButton_Click
       
    
#类内部事件声明
    def handler2(self, sender, eventArgs):
        sender.FontSize 
= sender.FontSize #此处如果注释代码会报错,让我很晕

   
    
def MsgButton_Click(self, sender, eventArgs):
        HtmlPage.Window.Alert(
"hello, " + self.scene.UserInput.Text + "!"#显示输入信息

App().start()

      看来代码果然比我们所使用的C#简单很多,代码更少了将近一半。
   
      下载就运行Chiron.exe来打包运行xap文件,在CMD命令行运行下面命令行:
   
      c:/py>"C:/Program Files/Microsoft SDKs/Silverlight/v2.0/Tools/Chiron/Chiron.exe" /w


     
   
    而其运行结果如下:

   

   
    好了,今天代码就到这里了。
   
    源码下载,请点击这里:)
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 想去日本怎么办签证 孩子没有出生证怎么办通行证 去日本旅游怎么办签证 去美国旅游签证怎么办 我想去泰国怎么办签证 怎么办去泰国的签证 去韩国工作怎么办签证 去越南打工怎么办签证 越南到中国签证怎么办 去越南工作签证怎么办 马来西亚留学签证过期后怎么办 日本留学存款不够怎么办 没有工作单位怎么办签证 深户日本签证怎么办 土耳其跟团签证怎么办 公司取消交通车职工怎么办 出国健康证丢失怎么办 大三阳怎么办健康证 办不了健康证怎么办 办健康证不合格怎么办 美团健康证怎么办 便检取样很多怎么办 拉不出大便怎么办马上解决方法 无业人员怎么办健康证 健康证没身份证怎么办 身份证过期了怎么办护照 驾照体检表丢了怎么办 驾照体检表掉了怎么办 驾校体检表掉了怎么办 身份证掉了怎么办护照 驾照体检表过期了怎么办 助力车行驶证过期怎么办 c1证骑摩托车怎么办 别人知道驾驶证号码怎么办 摩托车卖了车牌怎么办 违章超过12分怎么办 违章扣分24分怎么办 驾驶证有效期过了怎么办 驾驶证到期没审怎么办 驾驶证扣不了分怎么办 集体户口怎么办户口本公证