好嘴頭子,不如爛筆頭子,不動手試試怎麼知道自己原來這麼強!


好嘴頭子,不如爛筆頭子,講了這麼些理論,不動手試試是不行的!


請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習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>

在這裡我們都做了什麼呢?

  1. 顯示文本內容:歡迎來到木辛老師的編程課堂
  2. 告訴這個標籤位於窗口的頂端(side=“top”),expand這個參數可以先放放,之後的內容會講到。
  3. 使用padx和pady,只是用來撐開窗口的,並沒有實際用處。簡單來講就是,padx告訴系統這個label水平方向上窗口邊框距離label要保持padx的間距;pady則是豎直方向上的間距。
  4. 同時pack方法將這個label”粘“到主窗口上,這樣咱們就可以看到這個label了。
  5. 同理,再創建兩個按鈕:self.btn和self.quit。唯一不同的是使用command方式關聯上事件,這樣,點擊按鈕就會產生反應了。
  6. 比如,點擊self.btn按鈕,就會觸發self.say_hi()方法,也就是執行print()打印出:快樂編程,快樂成長!


代碼的最後,通過

<code>root = tk.Tk()
app = Application(master=root)/<code>

實例化了Tk和Application這個類,繼而調用app的主循環

<code>app.mainloop()/<code>

至此,你就可以看到一個窗口了。


就這樣,一個帶有文本顯示和按鈕交互的窗口程序就做完了,是不是非常簡單。接下來就可以往窗口上對切各種控件,實現更復雜的功能了。


當然了,製作一款實用的圖形化程序,還是需要很多知識的,咱們慢慢學習,慢慢練習就好了。


如果想完成更加有意思和強大的程序該怎麼學呢?


趕緊的訂閱木辛老師的專欄學習唄!↓↓↓↓↓↓↓



同學們不要忘記關注我們喲 ,下期課程更精彩,請大家一起期待吧~


快樂編程,快樂成長,拜拜!


分享到:


相關文章: