系統(tǒng)相關(guān)和圖形界面.ppt
《系統(tǒng)相關(guān)和圖形界面.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《系統(tǒng)相關(guān)和圖形界面.ppt(27頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第9章 系統(tǒng)相關(guān)和圖形界面,對(duì)于系統(tǒng)管理員而言,可能每天都會(huì)需要與腳本打交道,有時(shí)是為了簡(jiǎn)單的諸如自動(dòng)備份和恢復(fù)系統(tǒng)的任務(wù),有時(shí)是因?yàn)樾枰詣?dòng)完成很復(fù)雜且不斷重復(fù)性的工作,例如周期性的檢測(cè)和釋放磁盤空間,存儲(chǔ)24小時(shí)內(nèi)的所有系統(tǒng)設(shè)置的改動(dòng)等。腳本語(yǔ)言沒(méi)有繁冗的語(yǔ)法限制,能夠快速地開(kāi)發(fā)和執(zhí)行,即寫(xiě)即用,而且與操作系統(tǒng)結(jié)合非常緊密,其實(shí)最初就是為了協(xié)助系統(tǒng)管理員而誕生的。Ruby作為一門新興的動(dòng)態(tài)腳本語(yǔ)言,很好地繼承了前輩在系統(tǒng)管理方面的優(yōu)勢(shì)。在本章中將會(huì)全面介紹Ruby在系統(tǒng)方面的技術(shù)和技巧。另外在本章的后半部分還將介紹如何使用Ruby創(chuàng)建圖形界面(GUI)。,9.1 運(yùn)行外部程序,運(yùn)行外部程序
2、,是與外部系統(tǒng)交互的一種方式,也是系統(tǒng)操作最基礎(chǔ)的功能之一。Ruby提供了多種運(yùn)行外部程序的方式。 (1)第一種方式是使用%x方法,它可以執(zhí)行外部命令或程序,運(yùn)行時(shí),會(huì)一直等待程序運(yùn)行結(jié)束然后再繼續(xù)執(zhí)行后面的代碼,運(yùn)行完畢后會(huì)將程序輸出的結(jié)果以字符串形式返回。例如: list = %x(dir) (2)另外一種方式是使用system方法,很多語(yǔ)言中都有同名的方法,它通過(guò)一定的內(nèi)部機(jī)制執(zhí)行指定的命令。例如: system(“notepad”) #打開(kāi)記事本 system(“dir c:”) #顯示c:下的目錄文件,9.2 編寫(xiě)命令行程序和ARGV變量,雖然操作系統(tǒng)已經(jīng)步入了圖形化操作的階段,但
3、是對(duì)于系統(tǒng)管理而言,文本形式的命令行程序依然非常重要。 到此為止,本書(shū)中介紹的所有Ruby程序示例都是要么可以在irb中運(yùn)行,要么就是可以使用ruby.exe解析程序在命令行窗口中直接執(zhí)行,不難發(fā)現(xiàn)原來(lái)Ruby命令行程序可以實(shí)現(xiàn)如此強(qiáng)大的功能。目前編寫(xiě)完善的命令行程序唯一欠缺的就是接收通過(guò)命令行傳遞給Ruby程序的參數(shù),實(shí)際上Ruby提供了一個(gè)全局變量ARGV來(lái)實(shí)現(xiàn)這個(gè)功能。ARGV為一數(shù)組,可以使用ARGV.size獲得參數(shù)的數(shù)量,ARGV0來(lái)獲得第一個(gè)參數(shù)等。,9.3 Win32API和Win32OLE,雖然Ruby誕生于Unix環(huán)境,而且不容否認(rèn)的是Ruby在Unix環(huán)境中能夠發(fā)揮最大的
4、威力,不過(guò)Ruby的作者和整個(gè)社區(qū)都在盡力改變這種情況。Ruby已經(jīng)邁向了許多平臺(tái),作為Ruby的第二平臺(tái)Windows,很顯然也獲得了比較成熟的支持。下面就將介紹Ruby對(duì)于Windows 32 API接口以及Windows自動(dòng)化的支持和簡(jiǎn)單應(yīng)用。,9.3.1 Win32API簡(jiǎn)介,Win32 API是Windows操作系統(tǒng)內(nèi)核與應(yīng)用程序之間的接口,它將Windows系統(tǒng)內(nèi)核提供的功能進(jìn)行函數(shù)包裝,應(yīng)用程序通過(guò)調(diào)用相關(guān)函數(shù)而獲得相應(yīng)的系統(tǒng)功能。標(biāo)準(zhǔn)Win32APl函數(shù)包括系統(tǒng)服務(wù)、通用控件庫(kù)、圖形設(shè)備接口、網(wǎng)絡(luò)服務(wù)、用戶接口、系統(tǒng)Shell以及Windows系統(tǒng)信息等眾多方面的支持。 Rub
5、y標(biāo)準(zhǔn)庫(kù)中提供了一個(gè)名為Win32API的庫(kù),為Ruby程序提供了訪問(wèn)Window 32 API接口的支持。使用過(guò)程可以分為三步: (1)使用Win32API.new定義Ruby對(duì)API的接口,例如: get_cursor_pos = Win32API.new(user32,GetCursorPos,P,V) (2)調(diào)用API時(shí),使用Win32API實(shí)例的Call方法調(diào)用,同時(shí)可以傳入相應(yīng)的參數(shù)。例如: get_cursor_pos.Call(lpPoint) (3)傳入的參數(shù)和傳回的結(jié)果在需要時(shí),可以使用Array的實(shí)例方法pack和String的unpack方法設(shè)置或獲得正確的數(shù)據(jù)。,9.
6、3.2 Win32OLE簡(jiǎn)介,OLE (Object Linking and Embedding、對(duì)象的鏈接與嵌入)是一項(xiàng)增強(qiáng)Windows應(yīng)用程序之間的相互協(xié)作性的技術(shù),它使Windows應(yīng)用程序的功能得以擴(kuò)展。使用OLE技術(shù),一個(gè)Windows應(yīng)用程序可以啟動(dòng)其他Windows應(yīng)用程序,也可以顯示和控制其他Windows應(yīng)用程序的數(shù)據(jù),并在創(chuàng)建該數(shù)據(jù)的程序中對(duì)它進(jìn)行編輯。 Win32OLE庫(kù)是Ruby程序訪問(wèn)Window OLE自動(dòng)化操作的接口。它所操作的也是對(duì)象,因此相對(duì)于Win32API而言使用上會(huì)更加簡(jiǎn)單一些。在創(chuàng)建OLE對(duì)象時(shí),使用的也是Win32OLE.new方法,參數(shù)可以是OL
7、E自動(dòng)化對(duì)象類的名稱,也可以是類的CLSID。例如,以下兩種方式是一致的: excel = WIN32OLE.new(Excel.Application) excel = WIN32OLE.new(00024500-0000-0000-C000-000000000046),9.3.3 使用Win32OLE操作Word和Excel,Microsoft Office系列的產(chǎn)品都能比較好地支持OLE自動(dòng)化操作,也即意味著可以使用Ruby自動(dòng)創(chuàng)建Word文檔或者是Excel電子表格。,,Win32OLE創(chuàng)建的Word文檔,9.3.4 使用Win32OLE控制IE瀏覽器,代碼9-4通過(guò)一個(gè)示例,來(lái)演示如
8、何使用Win32OLE來(lái)控制IE瀏覽器,控制結(jié)果如圖所示。,,Win32OLE控制IE瀏覽器演示,9.4 Ruby構(gòu)建圖形界面,迄今為止,構(gòu)建圖形界面并不是Ruby的強(qiáng)項(xiàng)。圖形界面相關(guān)的編程與操作系統(tǒng)的GUI接口密切相關(guān),而Ruby作為一門跨平臺(tái)的語(yǔ)言,如果需要?jiǎng)?chuàng)建一個(gè)通用的圖形界面工具或程序顯然也是較為復(fù)雜的。不過(guò)幸好有許多開(kāi)發(fā)人員已經(jīng)考慮到了這個(gè)問(wèn)題,因而誕生了一些應(yīng)用于Ruby的GUI圖形接口庫(kù)。與數(shù)據(jù)庫(kù)接口庫(kù)類似,這些GUI接口庫(kù)封裝了許多創(chuàng)建圖形界面的代碼,使用的人只需要學(xué)習(xí)接口庫(kù)中所提供的簡(jiǎn)化的統(tǒng)一方法,而不需要去考慮如何與不同的操作系統(tǒng)的GUI接口打交道。 目前Ruby中可以使用
9、的圖形界面GUI庫(kù)有很多,常用的有Ruby/Tk、FXRuby、Ruby/GTK、WxRuby以及Shoes等。它們絕大部分都是開(kāi)源并且可以免費(fèi)使用的。下面首先對(duì)這些常用的GUI庫(kù)進(jìn)行一個(gè)簡(jiǎn)要的概述,在后面的幾節(jié)中將再針對(duì)較為有特色的Ruby/Tk、WxRuby和Shoes逐個(gè)進(jìn)行詳細(xì)的介紹。,9.5 Ruby/Tk應(yīng)用介紹,下面繼續(xù)詳細(xì)介紹Ruby/Tk的應(yīng)用。雖然Ruby環(huán)境中已經(jīng)自帶了Ruby的Tk接口,但是卻沒(méi)有攜帶完整的Tcl/Tk,因此在使用Ruby/Tk進(jìn)行應(yīng)用前仍然需要先下載并安裝Tcl/Tk包。,9.5.1 下載并安裝Tcl/Tk,在絕大多數(shù)的 Linux 發(fā)行版中,Tcl/
10、Tk 都是標(biāo)準(zhǔn)選項(xiàng)。不過(guò)對(duì)于Windows用戶而言,可以在ActiveState上下載到Tcl/Tk 二進(jìn)制安裝包,下載的地址為 8.4運(yùn)行的,這里需要下載的是8.4版本的安裝包,大小約為24.6M。 運(yùn)行下載的安裝文件,會(huì)出現(xiàn)如圖所示界面,界面中會(huì)顯示安裝包中所含的組件以及相應(yīng)的版本。依次單擊Next按鈕,基本上就完成了ActiveTcl的安裝。,,ActiveTcl安裝界面,9.5.2 編寫(xiě)Hello World,首先編寫(xiě)一個(gè)簡(jiǎn)單的Hello World Tk示例,在編輯器中輸入如代碼所示的代碼:,,Hello world程序演示,9.5.3 Tk部件,Tk中,部件是一種可以執(zhí)行特定功能的
11、圖形對(duì)象。界面中的任何圖形對(duì)象都可以視為一個(gè)小部件。對(duì)于 GUI 應(yīng)用程序而言,按鈕、文本、框架和滾動(dòng)欄都是小部件。本小節(jié)中將介紹幾個(gè)基本Tk小部件,并提供有關(guān)每個(gè)小部件的示例,除了前面介紹過(guò)的按鈕和標(biāo)簽外,還包括框架、多行文本輸入框和單行文本輸入框。 框架部件(TkFrame),正如其名稱所描述的那樣是一個(gè)框架或盒子,通常用來(lái)對(duì)其他小部件進(jìn)行分組。,,TkEntry演示,9.5.4 事件處理,窗體中的部件都能響應(yīng)一定的事件,例如鼠標(biāo)單擊、懸浮或者是鍵盤按鍵等。Tk中可以使用bind方法創(chuàng)建一個(gè)特定的事件到代碼塊的綁定。 bind方法接受兩個(gè)參數(shù),一個(gè)是綁定的事件;另外一個(gè)就是響應(yīng)該事件的代碼
12、塊。使用方法,例如綁定鼠標(biāo)光標(biāo)移入事件可以寫(xiě)為: obj.bind(Enter) 或者 obj.bind(Enter) do end,9.5.5 Canvas畫(huà)布,Ruby/Tk還提供了TkCanvas類以及其他一些類來(lái)支持繪圖功能。一般而言,這樣的一些類都以 Tkc 開(kāi)頭(c 表示 Canvas)。例如 TkcLine、TkcOval等。下面是一個(gè)簡(jiǎn)單的程序示例,結(jié)合前一節(jié)介紹的事件綁定方法,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的畫(huà)線的畫(huà)圖板,能夠使用鼠標(biāo)不斷在窗口中畫(huà)線。,,Canvas畫(huà)圖板,9.6 WxRuby應(yīng)用介紹,下面將介紹WxRuby的應(yīng)用。首先要介紹的的依然是如何在計(jì)算機(jī)中下載并安裝WxRuby。,
13、9.6.1 下載并安裝WxRuby,WxRuby的安裝過(guò)程較為簡(jiǎn)單,可以使用RubyGems或者去下載WxRuby的源代碼然后在計(jì)算機(jī)中編譯,顯然使用RubyGems是最簡(jiǎn)單快捷的方法。 在命令行窗口中輸入: gem install wxruby 等待gem程序更新完gem列表后,會(huì)提示選擇需要安裝WxRuby的版本,如下所示: Bulk updating Gem source index for: http://gems.rubyforge.org Select which gem to install for your platform (i386-mswin32) 1. wxruby 1
14、.9.7 (x86-linux) 2. wxruby 1.9.7 (universal-darwin-9) 3. wxruby 1.9.7 (x86-mswin32-60) 4. wxruby 1.9.7 (i386-mswin32) 5. Skip this gem 6. Cancel installation ,9.6.2 第一個(gè)WxRuby程序,首先還是以一個(gè)Hello world程序來(lái)對(duì)WxRuby有個(gè)初步的認(rèn)識(shí)。代碼將會(huì)創(chuàng)建一個(gè)簡(jiǎn)單的窗口,并在窗口中簡(jiǎn)單顯示“Hello world”。 代碼 Hello world程序 #引用WxRuby庫(kù) require wx include Wx
15、 # 創(chuàng)建一個(gè)繼承自Wx::App的類 class HelloWorld < App #創(chuàng)建初始化方法 def on_init #創(chuàng)建Hello World Frame helloframe = Frame.new(nil, -1, Hello World) #創(chuàng)建靜態(tài)文本 StaticText.new(helloframe,-1,Hello World) #顯示窗口 helloframe.show() end end #創(chuàng)建App的實(shí)例,展示窗體 HelloWorld.new.main_loop,9.6.3 基本控件介紹,從前面的示例中可以看到WxRuby所提供的控件種類是非常多了,基本
16、的控件都有數(shù)十種,這里僅以少數(shù)幾種為例介紹WxRuby中控件的使用,實(shí)際上其他控件的使用方法也大同小異。 1Wx::Panel 2Wx::Button 3Wx::TextCtrl 4Wx::BoxSizer 5演繹常見(jiàn)控件,9.6.4 事件處理,圖形界面的程序中必然要涉及到對(duì)事件的處理,WxRuby中通過(guò)一系列以evt開(kāi)頭的方法來(lái)定義事件的響應(yīng)。例如: #響應(yīng)大小改變的事件 evt_size puts 大小被改變 my_button = Wx::Button.new(self, :label = Press me) #響應(yīng)按鈕被單擊的事件 evt_button(my_button) puts
17、Button被單擊 在事件的響應(yīng)處理過(guò)程中,會(huì)傳遞一個(gè)包含事件信息的事件對(duì)象作為參數(shù)進(jìn)入響應(yīng)的代碼中。里面的信息可能會(huì)包括鼠標(biāo)的位置、按鍵的代碼等。 例如: evt_size | event | puts 現(xiàn)在的大小為:#event.size.width ,9.7 Shoes應(yīng)用介紹,Shoes也是一個(gè)跨平臺(tái)的圖形界面支持庫(kù),與Ruby/Tk或者WxRuby不同的是Shoes在設(shè)計(jì)中借鑒了大量Web特性,同時(shí)更加側(cè)重于畫(huà)圖以及動(dòng)畫(huà)的功能。,9.7.1 下載并安裝Shoes,Shoes的官方網(wǎng)站地址為 OS X系統(tǒng)、WIndows系統(tǒng)和Linux系統(tǒng)中的運(yùn)行效果截圖,正好體現(xiàn)了Shoes的跨平臺(tái)
18、、圖形繪圖功能的特性。,,Shoes官方網(wǎng)站,9.7.2 第一個(gè)Shoes程序,下面介紹如何使用Shoes來(lái)構(gòu)建圖形界面程序。首先還是先構(gòu)建一個(gè)最簡(jiǎn)單的Hello world程序,如代碼所示。 代碼 Shoes的Hello world程序 #創(chuàng)建Shoes APP窗體 Shoes.app :height = 200, :width = 200 do 創(chuàng)建按鈕 button Click me! do #設(shè)置單擊響應(yīng) alert Hello world! end end,,Hello world程序,9.7.3 Stacks和Flows介紹,Shoes中界面中元素的布局方式比較類似于HTM
19、L頁(yè)面中的方式。在HTML頁(yè)面中元素的顯示方式有block和inline兩種,一種是獨(dú)占一行,另外一種排列較為緊湊,類似于流的方式,只有依次排滿了才會(huì)排列到下一行。Shoes中與之對(duì)應(yīng)的有Stacks和Flows這兩個(gè)概念。,,布局排列演示,9.7.4 基本控件,Shoes中支持大部分常用的窗體控件,其中包括Button、Check、EditBox、EditLine、Image、ListBox、Radio等,有許多控件都是直接來(lái)自于HTML。這些控件的使用方法都非常簡(jiǎn)單,調(diào)用相應(yīng)名稱的方法,并傳入一個(gè)Hash參數(shù)即可。,,基本控件演示,9.7.5 繪圖和動(dòng)畫(huà),Shoes的強(qiáng)項(xiàng)在于繪圖和動(dòng)畫(huà),它
20、提供了大量的方法能夠繪制各種圖形以及進(jìn)行顏色和背景填充,另外構(gòu)造動(dòng)畫(huà)的方法也非常簡(jiǎn)單。 Shoes所提供的繪圖方法有如下所示的幾種。 畫(huà)線方法:line(x1, y1, x2, y2) 畫(huà)圓或者橢圓方法:oval(x, y, w, h) 畫(huà)方框方法:rect(x, y, w, h) 畫(huà)箭頭方法:arrow(x, y, size) 畫(huà)星形圖案:star(x, y, p, r, inner),9.8 小結(jié),本章中介紹了Ruby在操作系統(tǒng)方面的應(yīng)用以及構(gòu)建圖形界面。9.1節(jié)中介紹了在Ruby程序內(nèi)部調(diào)用外部程序的方法,隨后9.2節(jié)中介紹了如何創(chuàng)建Ruby命令行程序,讓Ruby自動(dòng)化完成一些系統(tǒng)的操作,并能夠傳入?yún)?shù)對(duì)程序進(jìn)行控制。隨后把應(yīng)用平臺(tái)聚焦在Windows系統(tǒng)中,介紹了如何使用Win32API和Win32OLE來(lái)執(zhí)行Windows系統(tǒng)特有的接口或自動(dòng)化操作。最后幾節(jié)中介紹了如何使用Ruby開(kāi)發(fā)構(gòu)建圖形界面,對(duì)目前較為流行的Ruby圖形界面接口進(jìn)行了一系列的概述,同時(shí)以Ruby/Tk、WxRuby和Shoes為例進(jìn)行了詳細(xì)的應(yīng)用講解。相信在閱讀完本章后,Ruby能夠幫助讀者完成一些繁瑣的任務(wù),成為讀者日常工作和應(yīng)用中的好幫手。,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級(jí)數(shù)學(xué)上冊(cè) 第三章 概率的進(jìn)一步認(rèn)識(shí)復(fù)習(xí)課件 (新版)北師大版
- 九年級(jí)數(shù)學(xué)上冊(cè) 第23章 圖形的相似 23.5 位似圖形授課課件 (新版)華東師大版
- 九年級(jí)歷史下冊(cè) 第四單元 第8課 美國(guó)經(jīng)濟(jì)的發(fā)展課件 新人教版
- 危急值報(bào)告及處理制度課件
- 高考小說(shuō)閱讀-第三講:小說(shuō)的敘述方式課件
- 國(guó)內(nèi)管理學(xué)院評(píng)鑒現(xiàn)況及未來(lái)發(fā)展課件
- “圖形的認(rèn)識(shí)與測(cè)量”知識(shí)梳理及教學(xué)策略課件
- 新版近視科普講座ppt課件
- 課件--迎接本科教學(xué)工作水平評(píng)估
- 現(xiàn)在完成進(jìn)行時(shí)PPT幻燈片課件
- 高考語(yǔ)文大一輪總復(fù)習(xí)-散文閱讀-概括內(nèi)容要點(diǎn)和主旨題題組訓(xùn)練ppt課件-新人教版
- 工程材料計(jì)劃編制課件
- 工廠車間管理基礎(chǔ)知識(shí)課件
- 2015北師大版六年級(jí)數(shù)學(xué)總復(fù)習(xí)正比例與反比例課件
- 文明集會(huì)禮儀規(guī)范班會(huì)課件