自學python’編程,做點筆記,分享體會。
一、學編程為什麼要搞GUI?不搞GUI,編程就是花拳繡腿。不從搞項目的角度去考慮編程思路永遠都是耍流氓。你是報班學習,你會發現你花了大把銀子,學了很多基礎知識,甚至是提高班,掌握了很多庫,但真正想搞項目的時候仍然一籌莫展。想過沒有,你寫個爬蟲,難道會讓用戶在控制台下運行?沒點交互,你好意思跟用戶交付?當然大廠除外,那都是流水線作業,你隻需管你那顆螺絲釘。
二、Python搞GUI為什麼要選Tkinter?常用的庫無非就是tkinter, wxPython, pyQt,很多人都覺得tkinter醜陋,好多大牛都推崇pyQt。個人覺得,pyQt頁面布局一時爽,當你修改界面,代碼又要重新轉換,涉及複雜的數據交互絕對讓人崩潰。反而,tkinter 是 Python 的标準 GUI 接口,程序員控制起來随時可以做到心中有數,一樣也可以做出外觀上乘的界面,比如ttkbootstrap庫。
就是按程序執行的先後順序從前到後寫代碼。
from tkinter import *
root = Tk()
root.title('萬師兄')
root.geometry('200x100 100 100')
Button(root, text='确定').pack()
Button(root, text='取消').pack()
root.mainloop()
就三步就可以創建一個GUI了,1創建Tk對象,2添加控件,3給個mainloop循環。這種寫法的好處就是前後邏輯比較好理解,比較适合初學者掌握庫的使用邏輯,不利之處就是不好複用。
2.類的寫法Python裡,一切都是對象,因此,可以用類将窗口封裝起來,便于擴展、重構等。
from tkinter import *
class Myapp(Frame):
def __init__(self, master):
super().__init__()
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
Button(self, text='确定').pack()
Button(self, text='取消').pack()
if __name__ == '__main__':
root = Tk()
root.title('萬師兄')
root.geometry('200x100 100 100')
app = Myapp(master=root)
app.mainloop()
這是一個大神的寫法,其中還是有幾個問題。1是主窗口if主程序中創建,需要進行必要的主窗口,還需要傳遞一個master參數,表明Myapp類的依附對象,比較麻煩,容易犯錯。另外,如果程序涉及多個窗口時,這種寫法就不好管理了,除了創建新的窗口類之外,還得在if主程序中創建新的窗口,略顯重複臃腫。需要注意,Myapp類繼承的是Frame類,初始化裡面必須要自己pack()一下。很多很牛的python課程裡都可能隻講單窗口的案例,
3.完全封裝将一個窗口所有内容全部封裝到一個類中。
from tkinter import *
class Myapp(Tk):
def __init__(self):
super().__init__()
self.title('萬師兄')
self.geometry('200x100 100 100')
self.createWidget()
def createWidget(self):
Button(self, text='确定').pack()
Button(self, text='取消').pack()
if __name__ == '__main__':
app = Myapp()
app.mainloop()
這樣,無論你有多少窗口,結構都十分清晰,主程序簡簡單單,頓時神清氣爽。
這些問題都是小問題,可能很多根本不會引人注意,但你思考得越深,境界越高。
我自學python,緻力于掌握和研究爬蟲、機器視覺和人工智能三個方向,歡迎指正交流。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!