有關Python系統文件進行介紹指導
對***次接觸到Python系統文件的用戶和學者來說,了解Python系統文件的概念是非常重要的,那么就先說一下什么是Python系統文件,所謂Python系統文件:當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
我們很驚訝的發現窗口變小了,但是其中多了一行字。變小了是因為窗口中已經放了東西了,python的Tkinter非常智能,能夠根據內容自動縮放。而不用和傳統的windows程序一樣,手工的指定絕對坐標了。對于label,它還是一個變量而已。不過這個變量代表了一個標簽,也就是那一行字。
而這個label的創建是用Label,而Label的參數是root表明了這個控件是root主窗口的成員控件,或者說是子窗口。label['text']表示設置這個標簽的text屬性為'be on your own',也就是文字內容了。#t#
label.pack和root.mainloop一樣費解,但是內涵一樣深刻。你現在可以簡單理解為把label顯示出來的功能,因為你把pack去掉,那你就看不到東西了。其實pack是和控件的布局排版有關西的。
只是把label的文本重新設置一下。這個完成了一個事件消息的處理,如果用C來寫,需要比這個長更加不好懂的寫法。另外你是否會對on_click中出現label這個變量比較奇怪呢?明明在on_click前面沒有定義label這個變量啊。如果我在C中這么寫程序,編譯器一定會告訴我出錯的。而Python系統文件是怎么知道label這個變量存在,然后沒有報錯的呢?
其實Python系統文件在你寫的時候根本就不用知道其是否存在,只是要在運行的時候找得到label就可以了。而運行的前后關系,是通過時間來關聯的而不是代碼上前后行的關系。這里由于label = Label(root)先于on_click執行,所以當on_click執行的時候,label就是一個已經定義的變量。如果沒有定義呢?那就報告出錯嘍。
- 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()
這個就比較復雜了。里面有一個StringVar。這個代表一個字符串,但是跟一般字符串不一樣。一般的這樣'dfsdf'的字符串是不可變的,你只能把變量指定為不同的字符串,但是字符串本身的內容是不可改變的。而StringVar則是可變的字符串。
所以用Python系統文件來設置和取得其內容。主要是entry(單行輸入框)要求一個這樣的屬性來設置和接收其輸入框的內容。一開始可能不習慣,但是用多了之后會覺得很方便的,因為只要用這個變量text,就能一直得到當前輸入框的內容。
當你能夠完整的把這個例子看懂的時候,你已經入門了。但是離自己寫一個有窗口的應用程序還有一定距離。主要是缺少更加豐富的控件和事件響應的處理能力,以及合理排版布局的能力。這個下次再說。