国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Python完全新手教程 -- 3
Lesson 12 python to exe
about py2exe

本文講述如何將一個(gè)python源代碼編譯成一個(gè)exe.....我會(huì)的只是最初步最基本的.....實(shí)際上那個(gè)py2exe似乎有著更強(qiáng)大的功能

1:下載安裝py2exe.....from http://twh@bitunion.org


2:假設(shè)你寫好了一個(gè)python程序....guess_number.py.......存在了c:\Python23\下面

3:再寫一個(gè)setup.py....也存在c:\Python23\下面......內(nèi)容如下

    代碼: [復(fù)制到剪貼板]  
# setup.py
from distutils.core import setup
import py2exe

setup(name="guess_number",
        scripts=["guess_number.py"],
)

其中name和scripts是需要你到時(shí)候具體修改的....

4:找到windows的dos模式(命令提示符).....或者自己做個(gè)快捷方式也可以....
C:\Python23>
C:\Python23>python setup.py py2exe
構(gòu)造就開始了....
幾秒鐘以后....
在你的C:\Python23就會(huì)出現(xiàn)兩個(gè)文件夾build和dist,前面那個(gè)里面似乎是源程序(這個(gè)我不太清楚)....dist里面的就是編譯好的.exe了.....ok....


btw....等國兩天有了實(shí)際應(yīng)用再來翻譯這些東西

Specifying additional files
Some applications need additional files at runtime, this maybe configuration files, fonts, bitmaps, whatever.

py2exe can copy these files into subdirectories of dist\myscript if they are specified in the setup script with the data_files option. data_files should contain a sequence of (target-dir, files) tuples, where files is a sequence of files to be copied.

Here's an example:

    代碼: [復(fù)制到剪貼板]  
# setup.py
from distutils.core import setup
import glob
import py2exe

setup(name="myscript",
        scripts=["myscript.py"],
        data_files=[("bitmaps",
                     ["bm/large.gif", "bm/small.gif"]),
                    ("fonts",
                     glob.glob("fonts\\*.fnt"))],
)

This would create a subdirectory bitmaps in dist\myscript, containing the two bitmaps, and a subdirectory fonts, containing all the *.fnt files.


相關(guān)資料出處....
http://starship.python.net/crew/theller/py2exe/


Lesson 13 寫一個(gè)簡單的界面很容易
圖形界面是非常有吸引力的東西。但是制作出來似乎不是那么容易,這個(gè)觀點(diǎn)對(duì)于用C來笨拙寫windows的窗口程序來說,是比較正確的。微軟公司出品的windows是一個(gè)圖形界面的操作系統(tǒng),這個(gè)和dos或者linux這些不一樣,他們一開始出來是針對(duì)字符界面的,然后再在上面加上一些庫來提供圖形的功能。windows則不同,它是包含在自己的最原始的功能之中,而這些圖形功能的提供是在user32.dll這樣的system目錄下的dll文件中以函數(shù)導(dǎo)出的形式提供的,但是要使用這些東西必須使用c語言的函數(shù)接口,而且編寫麻煩。有一個(gè)很大的wndproc中要填入所有的事件處理代碼,非常丑陋。而作為腳本語言,所應(yīng)該有的簡潔性,python對(duì)這個(gè)進(jìn)行了封裝。但是事情不是如你所想象。中間過程非常復(fù)雜,而且python用的也不是自己的庫,還是tcl的一個(gè)tk的庫再封裝了一次。雖然經(jīng)過層層封裝,裹得非常嚴(yán)實(shí),但是除了影響其在比較高性能的圖形場合下的應(yīng)用之外,并沒有帶來太大的麻煩。你能夠用很少的代碼,來完成其他語言+庫要很大行代碼才能表達(dá)的圖形樣式,雖然非常簡陋,不過足夠使用。而且python除了自己原包裝帶的這個(gè)tkinter庫之外,還有其他的第三方的選擇,比較豐富,而且也有能夠勝任各種應(yīng)用的選擇。甚至,還有opengl和directx的庫的封裝庫,能夠用來編寫2d和3d的游戲,這個(gè)非常的誘人哦。但是我不會(huì)

圖形界面的奧秘其實(shí)并不深?yuàn)W。我相信很多人學(xué)習(xí)windows編程都是從寫一個(gè)窗口開始的,而且都是從嘗試?yán)斫饽莻€(gè)消息和事件驅(qū)動(dòng)的模型入手的。大體的過程是這樣的,窗口就是用象素畫出來的。你可以把一個(gè)窗口想象成一個(gè)窗口,也可以把窗口看成一堆象素的集合。就像有人說看女色不過是皮肉色相一樣。而且窗口中的按鈕,編輯礦,各種圖標(biāo),無論是什么看起來像一個(gè)”物體“的東西,其實(shí)本質(zhì)上都是有應(yīng)用程序或者是庫或者是操作系統(tǒng)調(diào)用顯卡的驅(qū)動(dòng),通過顯卡的功能在屏幕上繪畫一些點(diǎn)出來。而所謂的”物體“有很多稱法,在windows中一般成為控件(control)。

而對(duì)于圖形界面的操控一般是通過鼠標(biāo)和鍵盤來完成的。鼠標(biāo)在屏幕上有一個(gè)自己的形象,那就是一個(gè)箭頭(當(dāng)然你也可以調(diào)整這個(gè)圖形為其他好玩的東西,it is your freedom)。而鍵盤呢則一般表示為一個(gè)虛線的框,表示這個(gè)是鍵盤的”焦點(diǎn)“所在的地方?;蛘呤蔷庉嬁蛑虚W動(dòng)的豎杠。這兩點(diǎn)中有一個(gè)共同點(diǎn),就是都有一個(gè)位置來確定要操作的對(duì)象。你點(diǎn)下鼠標(biāo)的時(shí)候,你操作的就是鼠標(biāo)的箭頭尖端指向的那個(gè)空間,而鍵盤按下也是在其焦點(diǎn)所在的控件那兒放聲。發(fā)生的是什么呢?發(fā)生的過程從硬件層面到軟件層面之后,最終是被操作系統(tǒng)接收。操作系統(tǒng)能夠知道你是點(diǎn)擊的是鼠標(biāo)還是鍵盤,在什么一個(gè)地方點(diǎn)下的,而且按下的是左鍵還是右鍵。操作系統(tǒng)還知道當(dāng)前窗口各處擺放的位置。綜合各路的信息,操作系統(tǒng)就能夠知道把這個(gè)”事件“作為”消息“發(fā)送給哪個(gè)窗口來處理。從中應(yīng)該能夠明白什么叫事件,而消息呢則是一個(gè)C中的結(jié)構(gòu)體,其中有幾個(gè)field中間放了有關(guān)這個(gè)事件的信息,然后就像一封信一樣從操作系統(tǒng)投遞到了窗口所在的應(yīng)用程序。然后應(yīng)用程序有一個(gè)事先注冊(cè)的”窗口過程“,其實(shí)就是一個(gè)函數(shù),用來接收這封“信”。其實(shí)就是接收到傳過來的參數(shù)。然后再進(jìn)行一些判斷,作出一定的響應(yīng)。這個(gè)就是所謂的事件驅(qū)動(dòng)。在沒有冗長的代碼,和展示所有細(xì)節(jié)的情況下,如果你真的以前對(duì)這個(gè)過程一無所知,肯定會(huì)覺得非常茫然。這個(gè)一筆帶過的敘述其實(shí)只是讓你有一個(gè)感性的認(rèn)識(shí)。其實(shí)在python中使用窗口根本不用管諸葛么多。基本上只是把自己要的窗口和控件,給一些位置的參數(shù),一些文字的提示內(nèi)容的參數(shù)就能把窗口擺好,顯示出來。然后再通過代碼告訴python,當(dāng)“這個(gè)按鈕按下的時(shí)候執(zhí)行這個(gè)函數(shù)”,然后就能讓窗口有響應(yīng)。最后記得給一個(gè)退出窗口的辦法就一切OK了。其中能省的復(fù)雜度基本上都被庫給隱藏掉了。付出的代價(jià)是慢一些,但是我就不相信你能感覺出來,除非你用的電腦連vcd都看不流暢。所以大可放心的享受這種便利。

OK,下面來正式的看看怎么在python中創(chuàng)建一個(gè)窗口,然后顯示出來。

    代碼: [復(fù)制到剪貼板]  
from Tkinter import *
root = Tk()
root.mainloop()

就3行就能夠把主窗口顯示出來了。root是一個(gè)變量名稱,其代表了這個(gè)主窗口。以后創(chuàng)建控件的時(shí)候指定控件創(chuàng)建在什么窗口之中,就要用這個(gè)root來表示了。而Tk()是一個(gè)Tkinter庫之中的函數(shù)(其實(shí)是類的構(gòu)造函數(shù),構(gòu)造了一個(gè)對(duì)象)。而mainloop則是主窗口的成員函數(shù),也就是表示讓這個(gè)root工作起來,開始接收鼠標(biāo)的和鍵盤的操作。你現(xiàn)在就能夠通過鼠標(biāo)縮放以及關(guān)閉這個(gè)窗口了。注意到窗口的標(biāo)題是tk,我們可以進(jìn)行一些修改

root= Tk(className='bitunion')

然后窗口的標(biāo)題就變成了bitunion了。下面要作的是把這個(gè)窗口的內(nèi)容填充一下,讓其有一些東西。先加入一個(gè)標(biāo)簽,所謂標(biāo)簽就是一行字。

    代碼: [復(fù)制到剪貼板]  
from Tkinter import *
root = Tk(className='bitunion')
label = Label(root)
label['text'] = 'be on your own'
label.pack()
root.mainloop()

我們很驚訝的發(fā)現(xiàn)窗口變小了,但是其中多了一行字。變小了是因?yàn)榇翱谥幸呀?jīng)放了東西了,python的Tkinter非常智能,能夠根據(jù)內(nèi)容自動(dòng)縮放,而不用和傳統(tǒng)的windows程序一樣,手工的指定絕對(duì)坐標(biāo)了。對(duì)于label,它還是一個(gè)變量而已。不過這個(gè)變量代表了一個(gè)標(biāo)簽,也就是那一行字。而這個(gè)label的創(chuàng)建是用Label,而Label的參數(shù)是root表明了這個(gè)控件是root主窗口的成員控件,或者說是子窗口。label['text']表示設(shè)置這個(gè)標(biāo)簽的text屬性為'be on your own',也就是文字內(nèi)容了。label.pack和root.mainloop一樣費(fèi)解,但是內(nèi)涵一樣深刻。你現(xiàn)在可以簡單理解為把label顯示出來的功能,因?yàn)槟惆裵ack去掉,那你就看不到東西了。其實(shí)pack是和控件的布局排版有關(guān)西的。

再添加一個(gè)按鈕就能夠有更加豐富的內(nèi)容了,方法是很類似的??粗桑?br>
    代碼: [復(fù)制到剪貼板]  
from Tkinter import *
root = Tk(className='bitunion')
label = Label(root)
label['text'] = 'be on your own'
label.pack()
button = Button(root)
button['text'] = 'change it'
button.pack()
root.mainloop()

只不過把button替換了label而Button替換了Label。注意一下Button和Label這些都是Tkinter這些庫提供的,而button和Button這樣大小寫之間的差別僅僅是巧合,你能夠隨便的給變量取名字,但是Button和Label這些則是需要記住的東西,寫代碼的時(shí)候要經(jīng)常用到的名字。但是點(diǎn)擊按鈕你會(huì)比較失望,因?yàn)椴]有什么反應(yīng)。不過也是當(dāng)然的事情,你并沒有告訴計(jì)算機(jī)對(duì)于這樣一個(gè)按鈕的點(diǎn)擊操作需要作出一個(gè)什么樣的反應(yīng)來反饋給用戶。而這個(gè)指定作出什么反應(yīng)的工作只需要一個(gè)行,但是作出具體什么樣反應(yīng)的描述則需要新建一個(gè)函數(shù)來進(jìn)行處理。

    代碼: [復(fù)制到剪貼板]  
from Tkinter import *
def on_click():
      label['text'] = 'no way out'
root = Tk(className='bitunion')
label = Label(root)
label['text'] = 'be on your own'
label.pack()
button = Button(root)
button['text'] = 'change it'
button['command'] = on_click
button.pack()
root.mainloop()

button['command'] = on_click表示對(duì)于button(按鈕)的點(diǎn)擊屬性用on_click這個(gè)函數(shù)來處理。而on_click函數(shù)也很簡潔,只是把label的文本重新設(shè)置一下。這個(gè)完成了一個(gè)事件消息的處理,如果用C來寫,需要比這個(gè)長更加不好懂的寫法。另外你是否會(huì)對(duì)on_click中出現(xiàn)label這個(gè)變量比較奇怪呢?明明在on_click前面沒有定義label這個(gè)變量啊。如果我在C中這么寫程序,編譯器一定會(huì)告訴我出錯(cuò)的。而python是怎么知道label這個(gè)變量存在,然后沒有報(bào)錯(cuò)的呢?其實(shí)python在你寫的時(shí)候根本就不用知道其是否存在,只是要在運(yùn)行的時(shí)候找得到label就可以了。而運(yùn)行的前后關(guān)系,是通過時(shí)間來關(guān)聯(lián)的而不是代碼上前后行的關(guān)系。這里由于label = Label(root)先于on_click執(zhí)行,所以當(dāng)on_click執(zhí)行的時(shí)候,label就是一個(gè)已經(jīng)定義的變量。如果沒有定義呢?那就報(bào)告出錯(cuò)嘍。

最后一個(gè)例子:

    代碼: [復(fù)制到剪貼板]  
from Tkinter import *
def on_click():
      label['text'] = text.get()

root = Tk(className='bitunion')
label = Label(root)
label['text'] = 'be on your own'
label.pack()
text = StringVar()
text.set('change to what?')
entry = Entry(root)
entry['textvariable'] = text
entry.pack()
button = Button(root)
button['text'] = 'change it'
button['command'] = on_click
button.pack()
root.mainloop()

這個(gè)就比較復(fù)雜了。里面有一個(gè)StringVar。這個(gè)代表一個(gè)字符串,但是跟一般字符串不一樣。一般的這樣'dfsdf'的字符串是不可變的,你只能把變量指定為不同的字符串,但是字符串本身的內(nèi)容是不可改變的。而StringVar則是可變的字符串。所以了set和get來設(shè)置和取得其內(nèi)容。主要是entry(單行輸入框)要求一個(gè)這樣的屬性來設(shè)置和接收其輸入框的內(nèi)容。一開始可能不習(xí)慣,但是用多了之后會(huì)覺得很方便的,因?yàn)橹灰眠@個(gè)變量text,就能一直得到當(dāng)前輸入框的內(nèi)容。當(dāng)你能夠完整的把這個(gè)例子看懂的時(shí)候,你已經(jīng)入門了。但是離自己寫一個(gè)有窗口的應(yīng)用程序還有一定距離。主要是缺少更加豐富的控件和事件響應(yīng)的處理能力,以及合理排版布局的能力。這個(gè)下次再說
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
大數(shù)據(jù)Python基礎(chǔ)語法進(jìn)階學(xué)習(xí),進(jìn)來看下你需要不!
Python制作圖形用戶界面(GUI)讓操作可視化
Tkinter教程
Python -- Gui編程 -- Tkinter的使用 -- 對(duì)話框消息框
【python】Tkinter可視化窗口(一)
可愛的 Python:Python 中的 TK編程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服