好嘴頭子,不如爛筆頭子,講了這麼些理論,不動手試試是不行的!
請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~
大家好,木辛老師又來了!
關於Tkinter,咱們已經有所瞭解,那麼,是不是可以牛刀小試一下了呢?
完全可以!至少今天這節課咱們能看看Tkinter的最簡單實現。
俗話說,好嘴頭子,不如爛筆頭子。理論千千萬萬,實踐第一條。讓我們開始吧!
好多人剛開始學習編程的時候,都會從“Hello world”開始。
木辛老師當初也沒少做各種語言版本的“Hello world”,這節課咱們就來做一個Tkinter的“Hello World”吧。
剛開始接觸圖形化編程的時候,大家是不是心裡都很發憷。
這窗口怎麼實現?
窗口大小怎麼控制?
按鈕怎麼放到窗口上?
點擊按鈕之後會發生什麼?
之前寫了這麼多代碼竟然不知道如何下手。
不用著急,使用“高級”語言編寫圖形化程序,你不需要關注太多底層的知識,只需要簡單的調用語言或者說它的庫提供的接口就可以了。
為什麼說是“高級”語言呢?
因為很多語言也許只需要一行代碼就可以實現特別複雜的圖形效果,不是說這一行代碼有多牛,而是有非常大量的函數或者方法被封裝到一起,並且提供了這個接口而已。
這就是”高級“的所在。
看不到,不代表不存在,也許再往前看看,就能瞧見!
好了,這些細節就不多說了,有些細節是不需要太深入研究的。畢竟知識浩如煙海,而人的精力是有限的,只需要掌握對自己有用的就可以了。
不知道如何下手圖形化編程的同學可以坐好聽講了。
我們通過Tkinter實現一個簡單的窗口來不如圖形化編程的殿堂吧。
“快點打開編輯器,編寫程序還沒達到使用意念來實現的地步!”
然後呢,在你的編輯器裡輸入如下代碼:
<code>import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title('第一個例子')
self.pack()
self.create()
def create(self):
self.label = tk.Label(self, text="歡迎來到木辛老師的編程課堂")
self.label.pack(side="top", expand=1, padx=100, pady=80)
self.btn = tk.Button(self)
self.btn["text"] = "打聲招呼"
self.btn["command"] = self.say_hi
self.btn.pack(side="top")
self.quit = tk.Button(self, text="退出", fg="red",
command=self.master.destroy)
self.quit.pack(side="bottom")
def say_hi(self):
print("快樂編程,快樂成長!")
root = tk.Tk()
app = Application(master=root)
app.mainloop()/<code>
如果你使用的PyCharm的話,請右鍵點擊這個文件,運行程序。
看看執行效果吧。
咦!是不是很好玩?
之前編寫了很多Python程序,是不是都是黑洞洞的輸出字符。通過Tkinter編寫的程序給人一種眼前亮閃閃的感覺?
圖形化編程就是這麼有趣。
接下來,木辛老師帶著大家簡單講解一下這個程序。這裡呢,有一些知識你可能不能深刻體會,在今後的內容裡,木辛老師會慢慢深入講解的。大家敬請期待之後的課程呀!
首先,使用Tkinter庫編程,需要先將他導入進來。
然後,我們創建了一個Application類,作為tk.Frame的子類,這樣就可以直接使用tk.Frame很多屬性和方法了。
使用__init__()方法初始化這個類,這裡可以做很多事情,比如告訴父類,我們將要使用你的屬性和方法了,不要吝嗇喲。
<code>super().__init__(master)/<code>
我們在這個類外邊實例化了Tk()類,將這個實例傳進來了,這樣就可以使用tk的一些方法,比如
<code>self.master.title('第一個例子')
self.pack()/<code>
再往後,開始往這個“大盤子”上堆放控件了。
通過create()自定義函數,調用控件的創建。
第一個創建的是一個Label,用來顯示內容的只讀控件
<code>self.label = tk.Label(self, text="歡迎來到木辛老師的編程課堂")
self.label.pack(side="top", expand=1, padx=100, pady=80)/<code>
在這裡我們都做了什麼呢?
- 顯示文本內容:歡迎來到木辛老師的編程課堂
- 告訴這個標籤位於窗口的頂端(side=“top”),expand這個參數可以先放放,之後的內容會講到。
- 使用padx和pady,只是用來撐開窗口的,並沒有實際用處。簡單來講就是,padx告訴系統這個label水平方向上窗口邊框距離label要保持padx的間距;pady則是豎直方向上的間距。
- 同時pack方法將這個label”粘“到主窗口上,這樣咱們就可以看到這個label了。
- 同理,再創建兩個按鈕:self.btn和self.quit。唯一不同的是使用command方式關聯上事件,這樣,點擊按鈕就會產生反應了。
- 比如,點擊self.btn按鈕,就會觸發self.say_hi()方法,也就是執行print()打印出:快樂編程,快樂成長!
代碼的最後,通過
<code>root = tk.Tk()
app = Application(master=root)/<code>
實例化了Tk和Application這個類,繼而調用app的主循環
<code>app.mainloop()/<code>
至此,你就可以看到一個窗口了。
就這樣,一個帶有文本顯示和按鈕交互的窗口程序就做完了,是不是非常簡單。接下來就可以往窗口上對切各種控件,實現更復雜的功能了。
當然了,製作一款實用的圖形化程序,還是需要很多知識的,咱們慢慢學習,慢慢練習就好了。
如果想完成更加有意思和強大的程序該怎麼學呢?
趕緊的訂閱木辛老師的專欄學習唄!↓↓↓↓↓↓↓
同學們不要忘記關注我們喲 ,下期課程更精彩,請大家一起期待吧~
快樂編程,快樂成長,拜拜!
閱讀更多 木辛老師帶你玩轉編程 的文章