https://www.toutiao.com/article/7216746360014570018/?log_from=68cc8fc2aa53f_1680873953396 小朋友們好,大朋友們好! 我是貓妹,一名愛上Python編程的小學(xué)生。 歡迎和貓妹一起,趣味學(xué)Python。 今日主題 今天咱們學(xué)習(xí)下什么是GUI編程,Python自帶的tkinter庫,最后欣賞下tkinter編寫的計算器。 GUI編程 什么是GUI編程呢? GUI編程(Graphical User Interface),即用戶圖形界面編程。 比如咱們用的辦公軟件、上網(wǎng)軟件等等都屬于GUI編程。 和GUI編程相對應(yīng)的,是非GUI方式運行(命令窗口)。 早期的DOS系統(tǒng)無界面,只有極少數(shù)人會使用。 后來的Windows系統(tǒng),人人可上手使用。 GUI程序,使用方便,交互性好。 非GUI程序,運行高效。 tkinter簡介 Python中GUI工具包有很多,比如tkinter、wxPython、PyQT、PyGTK、PySide等。 不同的工具包,各有千秋。 具體選擇哪個,要根據(jù)使用場合來選擇。 tkinter是Python官方GUI工具包,安裝Python3.x后,會安裝tkinter。 tkinter的語法和HTML相似。 想使用tkinter,只需要三步:
Label標(biāo)簽組件 可以用來顯示文本或圖片,語法如下: label = tkinter.Label(root, text="文本內(nèi)容") label.pack() label = tkinter.Label(root, image=圖片對象) label.pack() Label常用屬性 tkinter.PhotoImage用來創(chuàng)建一個圖像對象。 compound可設(shè)置top、bottom、left、right、center,表示圖片在文字的上下左右中。 如果要同時顯示文字、圖片,除了設(shè)置text和image外,compound也必須要設(shè)置。 除了自定義圖片外,Label組件還為我們提供了內(nèi)置圖片。 語法為thinter.Label(root,bitmap="取值") Button按鈕組件 可以用鼠標(biāo)點擊,語法如下: tkinter.Button(root, text="文本", command=函數(shù)名) Checkbutton復(fù)選框 可以進行選擇的框,可以選多個。語法如下: tkinter.Checkbutton(root, text="", variable=取值) text要顯示的文本。 variable復(fù)選框的值。 下圖中的v = tkinter.IntVar()表示定義了一個變量v。 v的值0或1是復(fù)選框是否被選中,0未被選中,1選中。 也可以不用0和1來表示是否選中,可以使用onValue和offValue來表示。 如果選項較多,可以使用列表和循環(huán)來實現(xiàn)。 anchor指定顯示位置,九個方向(NSWS)(NW NE SE SW)(CENTER)。 單選按鈕Radiobutton 單選框也就是單選按鈕,語法為: tkinter.Radiobutton(root, text="",value="", variable=取值) text要實現(xiàn)的值,給用戶看。 value值,給程序看。 variable動態(tài)存儲value值,會隨著value變化而變化。 如果有多個選項,可以使用for循環(huán)處理。 LabelFrame分組框 可以使用LabelFrame組件來對單選框或復(fù)選框進行分組。 語法為: tkinter.LabelFrame(root, text="") Entry文本框 單行文本框Entry語法為: tkinter.Entry(root) tkinter提供了三種布局組件的方法:pack,gird,place。 gird允許用戶使用表格形式來管理組件的位置。 row=1,column=2表示第2行第3列。 可以使用Entry組件的get()獲取輸入值。 Listbox列表框 如果有多個選項,要么使用單選框Radiobutton,要么使用多選框Checkbutton。 但是,如果選擇特別多呢? 比如12個月,這時用Listbox列表框比較合適。 計算器 最后,我們欣賞幾款tkinter寫的計算器吧! 怎么樣? 挺漂亮吧? 網(wǎng)絡(luò)上有許許多多的基于tkinter寫的計算器程序,感興趣的小伙伴不妨借鑒學(xué)習(xí)下。 好了,我們今天就學(xué)到這里吧! 如果遇到什么問題,咱們多多交流,共同解決。 我是貓妹,咱們下次見! |
|