使用WPF为Powershell程序制作GUI界面

1. 使用Xaml创建应用界面

  打开visual studio,创建一个新的项目,在已安装模板中选择Visual C# →Wpf应用。

  完成创建后,我们得到如下图所示的应用界面。

  

  wpf界面是基于xaml语言设计的,但是无需学习xaml,也可以用工具箱中的各种控件拖拽出不错的布局(就像拖拽winform的控件一样)。再配合属性面板,修改各个控件的属性,很容易就得到一个还看得过去的GUI界面。

  

  保存项目。在项目的目录下找到MainWindows.xaml,将其复制一份,这个xaml文件将会成为powershell脚本应用的GUI布局文件。

## 2. 编写powershell脚本

  新建powershell脚本。

  首先引用wpf framework/core程序集,使得powershell脚本具备创建wpf应用的能力。

Add-type -AssemblyName presentationframework, presentationcore

  接着创建wpf对象。

$wpf = @{ }

  在脚本中读入xaml文件

$x = Split-Path -Parent $MyInvocation.MyCommand.Definition

$path = $x + ".\MainWindow.xaml"

$inputXAML = Get-Content -Path $path

$inputCleanXAML = $inputXAML -replace ‘mc:Ignorable="d"‘,‘‘ -replace "x:N",‘N‘ -replace ‘x:Class=".*?"‘,‘‘ -replace ‘d:DesignHeight="\d*?"‘,‘‘ -replace ‘d:DesignWidth="\d*?"‘,‘‘

  几个说明:

  $x是该powershell脚本所在文件夹的绝对路径,我将MainWindows.xaml放在与powershell脚本同级的文件夹下,使用 $MyInvocation.MyCommand.Definition获取当前运行脚本所在路径, Split-Path -Parent $MyInvocation.MyCommand.Definition即可获得当前运行脚本所在的文件夹路径。

  由于powershell只支持对xml的解析,所以需要对xaml稍微修改一下,使用-replace批量替换掉多余的字符。

$inputCleanXAML = $inputXAML -replace ‘mc:Ignorable="d"‘,‘‘ -replace "x:N",‘N‘ -replace ‘x:Class=".*?"‘,‘‘ -replace ‘d:DesignHeight="\d*?"‘,‘‘ -replace ‘d:DesignWidth="\d*?"‘,‘‘

  所有的xaml文件都可以使用这条语句来替换成xml。

  紧接着使用xmlReader解析xml,创建窗体。

[xml]$xaml = $inputCleanXAML

$reader = New-Object System.Xml.XmlNodeReader $xaml

$tempform = [Windows.Markup.XamlReader]::Load($reader)

  遍历完xml的节点后,调用$wpf.MainWindow.ShowDialog()就可以显示GUI窗体了。

  此时我们点击窗体的按钮,窗体还不会有反应,接下来添加交互逻辑。

  添加如下语句

$wpf.Confirm.add_Click({

#TODO...

})

  (在块内添加单击按钮时你所需要执行的逻辑。)

  注意:我在创建wpf引用界面时,创建了一个名为“Confirm”的按钮,所以这里的add_Click({})对应的就是该按钮的点击时引发的事件。

  保存powershell脚本文件,点击运行,我们即可以得到一个GUI程序了,如下图:

  这个powershell脚本是我写的一个文本解析器,先点击More...按钮打开文件选择框,选择一个*.mod的文本文件,然后点击确定生成按钮获得变量列表--一个csv文件。

  你可以在*https://github.com/Afuness/PowershellLab/tree/master/GUI*获取源代码。

原文地址:https://www.cnblogs.com/Afuness/p/11442512.html

时间: 2024-10-11 17:31:57

使用WPF为Powershell程序制作GUI界面的相关文章

Visual Studio给Powershell 程序创建可视化界面

豆子经常写些Powershell的小脚本用来管理Windows服务器.有的时候我希望能够把这些小工具分享给同事,不过有些同事对于Powershell一窍不通,对于脚本控制台界面更是深恶痛绝,如果有些傻瓜化的图像界面便于操作就好了.豆子在网上做了些小研究,写了个简单的测试界面,下面分享一下心得. 网上有一些第三方的付费工具可以直接进行GUI的开发,穷人舍不得花钱,豆子用的是微软的Visual Studio 2015的社区版.这个是版本是免费下载的,下载安装很费时间,大概花了2个小时.这个是下载链接

python实现的、带GUI界面电影票房数据可视化程序

代码地址如下:http://www.demodashi.com/demo/14588.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据. 完成本项目后,可以进一步通过类似的方法实现股票数据的可视化操作. (代码在python2.7或python3.6下均能正常运行,已在以下环境中进行过测试: python2.7 + tushare0.9.8

python在linux制作图形界面(snack)

snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snack会提示找不到模块,一个原因是我们重装了系统的python,所以如果直接import不能找到模块,可以通过find命令查找 find / -name snack.py 找到的结果:/usr/lib64/python2.6/site-packages/snack.py 只需要在目录/usr/lib64

WPF如何用TreeView制作好友列表、播放列表(转)

WPF如何用TreeView制作好友列表.播放列表 前言 TreeView这个控件对于我来说是用得比较多的,以前做的小聊天软件(好友列表).音乐播放器(播放列表).类库展示器(树形类结构)等都用的是TreeView,下面以一个好友列表为例,说明一下制作过程,这个过程可以搬迁到其他类似的场景中去(树形结构的场景). 结果展示 制作过程 一:新建一个WPF工程,我命名为TreeViewDemo.(这步不解释) 二:准备图片,就是系统头像.在工程中新建一个Heads文件夹,并且添加系统头像图片,最后不

结对项目-四则运算出题程序(GUI版)

目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模块部分异常处理说明 八.界面模块的详细设计过程 九.界面模块与计算模块的对接 十.结对过程的描述 十一.结对编程的优缺点 十二.PSP(actual) 一.致搭档:     队友:李庭娟(我很喜欢把这位队友叫娟子,感觉很亲切) 首先非常非常感谢这位结对搭档--娟子,从最初组队到如今合作,始终非常信任

python基础-简单的GUI界面

采用tkinter实现了几个简单的GUI界面 调用tkinter的方式非常简单,只需要如下几行代码 1 import Tkinter 2 top = Tkinter.Tk() 3 # Code to add widgets will go here... 4 top.mainloop() 使用Button import Tkinter import tkMessageBox top = Tkinter.Tk() #add a function def hello(): tkMessageBox.

atitit。gui 界面皮肤以及换肤总结 java .net c++

atitit.gui 界面皮肤以及换肤总结 java .net c++ 1. Swing 的皮肤 1 1.1. windows风格 1 1.2. Mac风格 ( liquid 框架) 1 2. 如何给应用程序添加水印或者说是背景? 2 3. 常用swing皮肤包substance ,, JTattoo 2 c++ 的皮肤 qt 直接支持css 了,容易的.. .net winform雅十立马走生效... Sun公司在设计Swing时考虑到了将控件的视感(Look And Feel) ,也就是外观

黑马程序员-GUI

GUI图形化界面Graphical user interface MenuBar通过Frame的方法setMenuBar(Menubar)添加到Frame中.Dialog和FileDialog()通过构造函数接受一个Frame. CLI command user interface java.Awt ;Abstract Window ToolKit 需要调用本地系统方法,属于重量级控件 javax.Swing 在AWT的基础上,由java实现.轻量级控件. 常见的组件的排放方式,就是布局. 常见

用Python语言设计GUI界面

我们大家都编写过程序,但是如果能够设计一个GUI界面,会使程序增添一个很大的亮点!今天就让我们来用目前十分流行的python语言写出一个最基本的GUI,为日后设计更加漂亮的GUI打下基础. 工具/原料 Python编译软件 PyQt设计软件 方法/步骤 1 首先,如果没有安装python和PyQt软件的请先直接搜索下载并安装.python是一个开源软件,因此都是可以在网上免费下载的,最新版本即可.下载完成后,我们先打开PyQt designer. 2 打开后,首先是一个默认的新建窗口界面,在这里