2015年8月28日 星期五
Raspberry Pi 上的 Python 筆記 -- Tkinter
之前一開始學 Python 的時候就接觸過有關 GUI 的開發,不過那個時候因為還是程式語言初學者,連類別都還沒搞懂,想當然爾就不了了之。 最近則是要在 Raspberry Pi 上面用 GUI 介面的操作設計出來的系統,所以才又重新把目光放到Python的GUI函示庫。
上網找了一下,Python 大概有常見的GUI Framework 為 Tkinter、wxPython、pyQt 這三個。當初學的是 wxPython ,感覺還蠻簡單好用的。但就初學者而言,還是建議從 Tkinter 開始學起,因為其架構簡單好學,缺點就是功能上較沒有其他兩套這麼豐富,但就要建構一個簡單的像是控制系統而言,已經足夠了。而且是 Python 的標準套件庫,直接支援 Python2 和 Python3 ,安裝也較簡單,有時候甚至已經內建在其中了。
不過廢話不多說,下面就開始第一個連 Hello World 都不算是的範例程式碼:
-----------------------
-----------------------
先來看第一行程式碼
root = tk.Tk()
tk.Tk() 會回傳一個物件代表這個程式的主視窗,而我的習慣取名為 root 。這個主視窗物件有一個 .mainloop() 的method ,呼叫之後程式的進行就會進入一個無窮迴圈,並且卡在這裡,同時畫面上就會跳出來一個小視窗。這個就是這個程式的主視窗。
按右上的叉叉鈕,該程式就會停止。
接下來在這個主視窗內,放進去一個按鈕元件(button)
-------------------------
-------------------------
程式碼
button = tk.Button(master=root,text="hello", command=btn_call_back)
回傳了一個按鈕物件,其中將 root 物件用 "master" 參數傳入表示將這個 Button 物件 "掛" 在主視窗物件 "root" 的下面。Tkinter 裡的物件關係架構像是一個樹狀圖,每個物件都會有一個 "上層" 物件叫 master 。最上層的主視窗 (root) 為整個樹狀結構的最上層所以不用。
text 參數傳入一個字串,當做是按鈕上面顯示出來的文字。command 參數則傳入一個 function pointer (用 C 語言的說法,之後這樣的說法就叫 "慣C" 說法好了。),只要這個Button 被按下去,就會去執行該行程式碼。
<忽然覺得好累...待續...>
2015年8月25日 星期二
2015年8月22日 星期六
程式打在MS power point上,令人討厭的幾件事!
每次用power point 時編輯程式教學投影時, 常常程式用的字串雙引號, 常會變成 “abcde”,我要的是 "abcde", 換了其他字型也沒用, 另一個問題是, 變數明明打的小寫命名, 每次變數第一個字母都自動轉成大寫, ...
有沒有辦法解決這個問題呢?
進入Power Point 取消自動轉換, 3個step 搞定...
2015年8月19日 星期三
2015年8月3日 星期一
Python程式-格式化輸出與字串處理 (三)
格式化輸出 Print: 結構語法基本上同C/C++語言printf
>>> a=4
>>> b=5
>>> print('a=%d'%a)
a=4
>>> print(a,'*',b,'=',a*b)
4 * 5 = 20
一個以上的%d 輸出
>>> print('%d*%d=%d'%(a,b,a*b))
4*5=20
# 多了和C不一樣的功能, 可以用dict的結構,用key找對應的value來輸出
>>> print('%(#2)d*%(#1)d=%(#v)d'%{'#1':a,'#2':b,'#v':a*b})
5*4=20
>>> print('a=%d'%a)
a=4
>>> print('a=%10d'%a) # 空10格
a= 4
>>> print('a=%010d'%a) # 空10格且前面補0
a=0000000004
卬浮點數 %f
>>> money=172.85
>>> print('%f',money)
%f 172.85
>>> print('%f'%money)
172.850000
>>> print('$%6.2f''%money)
$172.85
>>> print('$%*.2f'%(10,money)) # 空10格
$ 172.85
字串函數
>>> text='it robotic lab'
>>> text.capitalize()
'It robotic lab'
>>> text
'it robotic lab'
>>> text=text.capitalize() #存回text
>>> text
'It robotic lab'
Python 流程控制(二)
if 敍述
>>> x = int(input("Please enter an integer: ")) Please enter an integer: 42 >>> if x < 0: ... x = 0 ... print('Negative changed to zero') ... elif x == 0: ... print('Zero') ... elif x == 1: ... print('Single') ... else: ... print('More') ...
for 敍述
>>> # Measure some strings: ... words = ['cat', 'window', 'defenestrate'] >>> for w in words: ... print(w, len(w)) ... cat 3 window 6 defenestrate 12
>>> for w in words[:]: # Loop over a slice copy of the entire list. ... if len(w) > 6: ... words.insert(0, w) ... >>> words ['defenestrate', 'cat', 'window', 'defenestrate']
Range (n) 產生0~n-1序列
>>> for i in range(5): ... print(i) ... 0 1 2 3 4
a = ['Mary', 'had', 'a', 'little', 'lamb'] for i in range(len(a)): print(i, a[i]) 0 Mary 1 had 2 a 3 little 5 lamb
while 敍述
a = ['Mary', 'had', 'a', 'little', 'lamb'] i=0while i < len(a):print(i, a[i])i+=10 Mary 1 had 2 a 3 little 4 lamb
訂閱:
文章
(
Atom
)