什么是GUI編程?Python自帶tkinter寫的計算器酷不酷(20)
小朋友們好,大朋友們好!
我是貓妹,一名愛上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,只需要三步:
導(dǎo)入tkinter模塊
創(chuàng)建窗口
進入循環(huán)
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é)到這里吧!
如果遇到什么問題,咱們多多交流,共同解決。
我是貓妹,咱們下次見!