iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >[翻译] python Tutorial
  • 475
分享到

[翻译] python Tutorial

pythonTutorial 2023-01-31 05:01:54 475人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

      Ironpython的飘亮之处大部分在于它的动态风格开发-- 通过添加功能元素,改变(modifying)运行着的应用(程序)。在windows 应用中, 这通常要求 delegates 和 event 处理 (i.e., 向


      Ironpython的飘亮之处大部分在于它的动态风格开发-- 通过添加功能元素,改变(modifying)运行着的应用(程序)。在windows 应用中, 这通常要求 delegates 和 event 处理 (i.e., 向现有的fORM窗口添加按钮,然后对按钮添加按下的处理功能代码).
 
      本tutorial 专注于在IronPython 中创建 delegates, 事件处理, 以及使用Windows窗体创建 Windows应用和WPF(以前的Avalon).
 
      阅读完本tutorial估计耗时: 25 分钟
 
      本tutorial 的目标就是了解如何在IronPython中创建 delegates 和事件处理代码, 以及通过Windows 窗体和WPF创建Windows 应用。
  • Events and Delegates
  • Windows Forms
  • Windows Presentation Foundation (Avalon)

Exercise 1: 事件和Delegates

     在本练习中, 您将会创建一个简单的事件处理,以及了解如何探索(explore)事件处理用法. 这个事件处理即是:
FileSystemWatcher - 一个触发( raises )文件系统变化“事件”的组件.

Task 1: File System Watcher

  1. 在tutorial路径下启动IronPython 控制台. (see Introduction for details).
  2. 引用System.IO 到全局名空间:
from System.IO import *
  1. 创建FileSystemWatcher 类实例并设置路径属性到当前路径下:
w = FileSystemWatcher()
dir(w)
w.Path = "."
  1. 创建事件处理方法. 因为不了解事件处理的参数, 我们获取一定数量的参数 (the *arg notation):
def handle(*args): print args
  1. 注册'Changed', 'Created' 和 'Deleted' 事件处理(event handler ):
w.Changed += handle
w.Created += handle
w.Deleted += handle
  1. 将watcher 置为raise 事件有效状态:
w.EnableRaisingEvents = True
  1. 打开Tutorial 路径并创建文件. 简单的方法就是右击鼠标选择 "新建"文本文档". 文件watcher 将会触发"Created"事件.
       您可以打开文档,随意敲入一些内容,然后保存该文档,看一下这个操作触发了 "Changed" 事件. 之后再删除该文件,看一下"Deleted" 事件被触发.
 
      在这些步骤之后,window 命令行将会显示类似下面的输出:
 
(System.IO.FileSystemWatcher, <System.IO.FileSystemEventArgs object at 0x03CE0BB8>)
(System.IO.FileSystemWatcher, <System.IO.FileSystemEventArgs object at 0x039B3B4D>)
(System.IO.FileSystemWatcher, <System.IO.FileSystemEventArgs object at 0x039B3B4D>)
(System.IO.FileSystemWatcher, <System.IO.FileSystemEventArgs object at 0x014EF022>)
  1. 下一个工作,我们将会创建一个改进的事件处理(器). 现在, 从文件watcher中移除当前的事件处理:
w.Changed -= handle
w.Created -= handle
w.Deleted -= handle
  1. (可选项) 您可以再尝试第七步,看一下相应事件, 尽管它们依旧触发, 但它不再被Python "handler"
    函数处理了.

Task 2: 改进事件处理

  1. 在上一个任务里,步骤7中我们了解参数类型被传递到了所有三个事件中:
FileSystemWatcher - 触发事件的对象实例
FileSystemEventArgs - 关于事件触发的信息
 
        使用dir() 去显示事件参数来找到事件所包含的信息:
 
from System.IO import *
w = FileSystemWatcher()
w.Path = "."
dir(FileSystemEventArgs)

       控制台会显示如下输出:

>>> dir(FileSystemEventArgs)
['ChangeType', 'Empty', 'Equals', 'Finalize', 'FullPath', 'GetHashCode', 'GetType', 'MemberwiseClone',
'Name', 'ReferenceEquals', 'ToString', '__class__', '__delattr__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__str__', 'get_ChangeType', 'get_FullPath', 'get_Name']['ChangeType', 'get_ChangeType',
'get_Name', 'FullPath', 'get_FullPath', 'Empty', 'Name']
  1. 通过事件参数属性的内容, 我们能够创建一个更好的事件处理,它将打印出事件参数对象的ChangeType和完成路径属性:
def handle(w, a): print a.ChangeType, a.FullPath
  1. 注册新事件处理到 'Changed', 'Created' 和 'Deleted' 事件:
w.Changed += handle
w.Created += handle
w.Deleted += handle
  1. 确保事件触发为有效状态:
w.EnableRaisingEvents = True
  1. 再次打开Tutorial 路径,然后创建一个新的文件 ("Created" 事件),  在记事本中编辑并保存该文件("Changed" 事件)然后删除该文件 ("Deleted" 事件).
        在该步骤之后, window命令行将会显示如下类似输出:
 
Created ."New Text Document.txt
Changed ."New Text Document.txt
Changed ."New Text Document.txt
Deleted ."New Text Document.txt
  1. 从文件watcher中移除事件处理:
w.Changed -= handle
w.Created -= handle
w.Deleted -= handle
  1. 按下Ctrl+Z 或 F6 回车键,退出IronPython 控制台.

Task 3: 在Python 中定义事件

  1. 最后,再看一下如何在Python代码中获取事件处理语法(event handler ):
pyevent - 该模块提供Python事件支持
make_event - 该方法返回事件tuple,包括可调用对象(callable object )。该对象允许对事件连接和未连接.

       创建事件:

import pyevent
hook,caller = pyevent.make_event()

       它返回两个对象。第一个对象允许用户挂钓方法到事件上。第二个对象允许事件持有者(owner) 引发事件.
(This allows for the separation of these abilities just like .net )现在把它放到类中看一下如何使用。
  1. 定义一个包括事件的类:
class MyClass(object):
    OnNewInstance,_NewInstance= pyevent.make_event()
    def __new__(cls):
        res = object.__new__(object)
        MyClass._NewInstance(res)
def NewInst(x): print 'new inst: ', x
MyClass.OnNewInstance += NewInst
a = MyClass()
new inst
  1. 就像CLR 事件,您也可以移除事件处理(句柄):
MyClass.OnNewInstance -= NewInst

Exercise 2: Windows 窗体

      为了开发交互式 Windows 应用, IronPython 须进行初始化. 默认情况下, Python 控制台运行在单一线程下. 当线程等待控制台窗口输入文本时, 被控制台动态创建的Windows 应用不能处理 Windows消息. 因此, 当前应用不会重画自身或处理输入到UI上.
      我们提供一个“.py” 文件去初始化IronPython 到Windows Forms 开发如下.
      在这个练习中, 您将会通过IronPython控制台动态创建一个简单的Windows Forms 应用.

Task 1: 简单Windows Forms 应用

  1. 在tutorial 路径下启动IronPython 控制台. (see Introduction for details).
  2. 通过加载winforms 模块/脚本,实始化Windows Forms:
import winforms
 
        Python 模块自动初始化 (执行) 引用,Windows Forms 初始化代码作为引入声明部分被执行。
  1. 引入System.Windows.Forms 和 System.Drawing 名空间到全局名空间:
from System.Windows.Forms import *
from System.Drawing import *
  1. 创建 Form 类实例并显示它:
f = Form()
f.Show()
 
       你可以按下alt-tab或查看运行程序,因为它可能不会跳到您桌面的最上面。
  1. 现在设置窗体Text 属性:
f.Text = "My First Interactive Application"
  1. 在运行的应用程序中, 注意form 的单击事件. 为 Click 事件创建一个事件处理句柄。
    单击 form 接受事件. 然后移除事件处理
def click(*args): print args
f.Click += click
        单击form 接受事件..
        输出类似如下:
>>> (System.Windows.Forms.Form, Text: My First Interactive Application, <System.Windows.Forms.MouseEventArgs object at 0x02324551>)
 
        因为要进一步开发,现在移除单击处理句柄.
f.Click -= click
  1. 使用dir() 函数显示MouseEventArgs
dir(MouseEventArgs)

  1. 了解MouseEventArgs内容, 创建一个改进单击事件处理句柄:
def click(f, a):
    l = Label(Text = "Hello")
    l.Location = a.Location
    f.Controls.Add(l)
  1. 注册事件处理句柄:
f.Click += click
  1. 现在用鼠标点击窗体,将会添加 "Hello" 标签. 我们也能够访问经鼠标单击添加进来的控件并改变它们:
for i in f.Controls: i.Font = Font("Verdana", 15)
for i in f.Controls: i.Text = "Hi"
  1. 在单击一会之后,form 会变得相当“拥挤”, 现在我们清空它:
f.Controls.Clear()
f.Close()
  1. 按下Ctrl+Z 或 F6 回车退出IronPython 控制台
The standalone version of this script is located in wfdemo.py in the Tutorial directory.

Exercise 3: Windows Presentation Foundation (Avalon)

      这个练习要求安装WPF. Please see prerequisites for more information.
      如同Windows Forms, Windows Presentation Foundation 也要求初始化用于支持互动开发. 初始化代码可参见"Tutorial"avalon.py" 文件.
      在此练习中, 您可以创建简单的Windows Presentation Foundation 应用.

Task 1: 简单WPF (Avalon) 应用

  1. 在tutorial路径下启动IronPython 控制台 (see Introduction for details).
  2. 实始化 Windows Presentation Foundation:
from avalon import *
  1. 创建WPF(Avalon) 窗体, 显示该窗体, 设置一些属性:
w = Window()
w.Show()
 
        您需要按下alt-tab 或查看运行程序,因为它可能不会跳到桌面最上层.
 
w.Title = "My Avalon Application"
w.SizeToContent = SizeToContent.WidthAndHeight
 
        通过设置窗体属性到 "size to content", the window shrinks.
  1. 现在添加如下内容:
w.Content = TextBlock()
w.Content.Text = "Hello IronPython!"
w.Content.FontSize = 50
  1. 移除window 内容:
w.Content = None

Task 2: Avalon 计算器

  1. If you are continuing from the Task 1, proceed to step 2.  Otherwise, please follow the
    steps 1-3 from the Task 1.
  2. Windows Presentation Foundation 使用 XAML 格式描述绘制布局和基本UI行为。加载"calc.xaml"
    并显示结果内容:
from avalon import *
w = Window()
w.Show()
w.Content = LoadXaml("calc.xaml")
 
       如果您按从任务1的流程到这个任务, 然后 w.SizeToContent 可被人为设计, but in either case,
you may need to manually drag the window's border down and to the right to see the calculator UI.
  1. 然后运行calculator的对象模型 (函数被定义在avalon.py 文件中)
for n in Walk(w): print n

  1. 使用Python's 列表语法,我们能够获得 calculator 的所有按钮:
[ n for n in Walk(w) if isinstance(n, Button) ]
System.Windows.Controls.Button
 
      控制台打印出所有的按钮列表.  为保存按钮列表对象到一个变量中, 使用解析的"_" 变量, 它一直会持有最近的 non-None 值结果:
 
buttons = _
  1. 我们能够对所有按钮进行修改,比如修改颜色和字体:
for b in buttons: b.FontSize *= 2
for b in buttons: b.Foreground = SolidColorBrush(Colors.Blue)
  1. 运行calculator , 我们对每个按钮提供事件处理句柄. 它可通过 calculator.py 文件引入:
import calculator
  1. 计算器模块包括 Calculator 类。 它会跟踪计算器表达式.  通过运行计算器 (that is, reGISter event handlers for the UI), 敲入:
calculator.enliven(w)

  1. 单击计算器按钮并对表达式进行求值。

  2. 探索 calculator.py 脚本文件 (位于Tutorial 路径下).  兴趣点是Calculator的.__init__ 方法:
def __init__(self, controls):                                           (1)
    self.expression = ""                                                (2)
                                                                        (3)
    for i in controls:                                                  (4)
        if isinstance(i, Button):                                       (5)
            if hasattr(self, "on_" + i.Name):                           (6)
                i.Click += getattr(self, "on_" + i.Name)                (7)
        elif isinstance(i, TextBox):                                    (8)
            if i.Name == "Result":                                      (9)
                self.result = i                                         (10)
    self.result.Text = self.expression                                  (11)
 
       方法的"controls" 参数是按钮和文本框列表, 与在步骤3-4中所创建的按钮列表相似. 初始化代码遍历该列表(line 4), 识别按钮(line 5), 并使用按钮的名称("One", "Multiply", " Equals", ...) 去查看calculator属性(方法) ,即通过相应名称 (如:"on_One", "on_Multiply", 和"on_Equals", 一一对应). 如果属性和方法有效, 我们可以挂钓此事件, 使用名称去获取该属性(line 7).
  1. 第二个兴趣点是on_Equals 方法, 特别是突出显示行.  Python 有内置函数 "eval", 它运行字符串表达式并返回运行结果.  Calculator 使用 "eval" 运行“计算表达式”(calculator expressions). "str" 函数会将值转换成字符串显示。
def on_Equals(self, b, e):
    try:
        result = str(eval(self.expression))
        self.result.Text = result
        self.expression = result
    except:
        self.result.Text = "<<ERROR>>"
        self.expression = ""
  1. 按下Ctrl+Z 或 F6 回车退出IronPython 控制台
Tutorial 总结
        IronPython 提供非常简单的方式开发应用程序,在动态和exploratory方式下. Windows Forms 与 Windows Presentation Foundation (Avalon) 都可以很容易的用最小步骤进行开发. 优势在于其为可视并且可在运行系统上动态修改而不需要重编译.
      在本tutorial 中您执行了如下练习:
  • Events and Delegates
  • Windows Forms
  • Windows Presentation Foundation (Avalon)
 
     在本练习中, 您已熟悉了在IronPython中使用 delegates 和 handling events  - 开发交互式WinForms 或 Avalon应用的重要部分。接着您动态创建了交互式Windows Forms应用并创建了两个Windows Presentation Foundation应用. 

     好了,今天的内容就先到这里了(其实到这里,还有一半内容)。

     在下一篇中,将会介绍IronPython 中的 COM 协同工作能力。

     感兴趣的朋友可以通过EMAIL或在回复中与我联系。

 
Tag标签: python,daizhj

--结束END--

本文标题: [翻译] python Tutorial

本文链接: https://www.lsjlt.com/news/188193.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [翻译] python Tutorial
          IronPython的飘亮之处大部分在于它的动态风格开发-- 通过添加功能元素,改变(modifying)运行着的应用(程序)。在Windows 应用中, 这通常要求 delegates 和 event 处理 (i.e., 向...
    99+
    2023-01-31
    python Tutorial
  • python cookbook 3 翻译
    自己买了个影印版,边翻边看边实践以期增强学习效果。计划是每日一个小片段,希望能坚持到底。P.S 翻得不好,请轻拍。。1 数据结构与算法1.1 将一个序列分离转换成多个变量问题:    如果你有一个由N个元素组成的元组或序列并想将其分离成多个...
    99+
    2023-01-31
    python cookbook
  • python爬虫--调用百度翻译进行文本翻译
    python爬虫实现百度译文本打开百度翻译网站地址,F12审查元素,我这里用的是火狐浏览器点网络,会发现很多GET,POST请求,右边消息头那里会有很多信息:请求地址、请求方法、远程地址、状态码、server、等等之类的信息这里的请求地址才...
    99+
    2023-01-30
    爬虫 文本 python
  • python3 调用百度翻译API翻译英
    自行申请百度开发者账号 import importlib,sys,urllib importlib.reload(sys) import urllib.request import json ...
    99+
    2023-01-31
    API
  • Python实现翻译小工具
    一、背景利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。 二、代码git源码地址Python实现翻译小工具 fanyi.py代码如下: #!/...
    99+
    2023-01-31
    小工具 Python
  • 中日翻译在线翻译如何利用日语翻译软件完成
    中日翻译在线翻译如何利用日语翻译软件完成?对于喜欢看日漫的朋友们来说,肯定都有一颗去日本旅游的心,但是去日本旅游首先我们要解决中日语翻译的问题。今天小编将要分享给大家一个方法,帮助大家快速完成中日语翻译。...
    99+
    2023-06-04
  • python利用有道翻译实现"语言翻译器"的功能实例
    实例如下: import urllib.request import urllib.parse import json while True: content = input('请输入需要翻译的内...
    99+
    2022-06-04
    翻译器 实例 语言
  • proxysql mysql_query_rules 翻译
    MySQL Query Rules Here is the statement used to create the mysql_query_rules table: ...
    99+
    2022-10-18
  • python自动翻译实现方法
    本文实例讲述了python自动翻译实现方法。分享给大家供大家参考,具体如下: 以前学过python的基础,一般也没用过。后来有一个参数表需要中英文。想了一下,还是用python做吧。调用的百度翻译接口,经历...
    99+
    2022-06-04
    方法 python
  • Python实现句子翻译功能
    初入Python,一开始就被她简介的语法所吸引,代码简洁优雅,之前在C#里面打开文件写入文件等操作相比Python复杂多了,而Python打开、修改和保存文件显得简单得多。 1、打开文件的例子: fi...
    99+
    2022-06-04
    句子 功能 Python
  • 用Python做一个翻译软件
    前两天吃了平哥的一波狗粮,他给女朋友写了一个翻译软件,自己真真切切的感受到了程序员的浪漫。在学习requests请求的时候做过类似的Demo,给百度翻译发送一个post请求可以实现任意词组的翻译,利用周六周日将那段代码进行了进一步优化加了...
    99+
    2023-01-30
    做一个 翻译软件 Python
  • 如何完成中文翻译日文在线翻译
    如何完成中文翻译日文在线翻译?相信许多朋友们都想要去日本旅游,但是一直担心语言问题会给自己的出行带来不便,所以才迟迟没有踏上旅途。所以今天小编就为大家分享一个中文翻译日文的方法,希望可以帮助大家有一个愉快的旅行。    ...
    99+
    2023-06-04
  • Python 制作自动化翻译工具
    妈妈再也不用担心我的英语了。 一个可能你似曾相识的场景 阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻...
    99+
    2022-06-02
    python 自动化翻译 python 翻译工具
  • python爬虫之爬取百度翻译
    破解百度翻译 翻译是一件麻烦的事情,如果可以写一个爬虫程序直接爬取百度翻译的翻译结果就好了,可当我打开百度翻译的页面,输入要翻译的词时突然发现不管我要翻译什么,网址都没有任何变化,那...
    99+
    2022-11-12
  • Python制作摩斯密码翻译器
    目录分析摩斯密码对照表实现代码结果 分析 摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者Samuel F...
    99+
    2022-11-12
  • python英文翻译是什么意思
    这篇文章主要介绍了python英文翻译是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • C#调用百度翻译实现翻译HALCON的示例
    目录准备工作参数简介输入参数输出参数使用HttpClient翻译工具类应用:翻译HALCON的示例描述准备工作 HALCON示例程序的描述部分一直是英文的,看起来很不方便。我决定汉化...
    99+
    2022-11-12
  • Python爬取百度翻译实现中英互译功能
    目录基础步骤提交表单获取响应并处理结果消除警告main.pysign.py由于下学期报了一个Python的入门课程 所以寒假一直在自己摸索,毕竟到时候不能挂科,也是水水学分 最近心血...
    99+
    2022-11-13
  • C#调用百度翻译API实现一个翻译功能
    前言 虽然百度翻译相对于谷歌翻译在准确性方面还有很大的提升空间,但网络的现实情况及百度翻译接口的免费易用性方面让我们选择百度翻译接口。下面来一起看看详细的步骤吧 方法如下 appId...
    99+
    2022-11-12
  • python接入使用百度翻译流程
    目录一、分析网页二、使用步骤1.导入库2.键盘输入内容3.构建url/headers/data参数4.发起请求响应数据5.解析数据输出结果三、完整代码一、分析网页 1. 打开网页,在...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作