出于自己的小愛好和小需求,需要用到Python GUI編程笛厦,可是看網(wǎng)上的教程并不全面纳鼎,英文有不好,看得費勁裳凸,所以自己找了一些文章綜合歸納起來贱鄙,理一理自己的思路,便于自己學習參考姨谷。
如果有不對的地方還請及時指出逗宁,感謝!
一梦湘、基本概念
tkinter是python內(nèi)置的編寫GUI的庫瞎颗,無需安裝,可以直接從python中導(dǎo)入:
from tkinter import *
或者import tkinter an tk
導(dǎo)入tkinter之后捌议,可以調(diào)用tkinter.TkVersion
來查看tkinter的版本哼拔,一般8.5以上的版本功能都是比較健全了。
二瓣颅、建立窗口
1. 基本窗口
import tkinter as tk
myWindow = tk.Tk()
myWindow.mainloop()
實際上就是實例化tkinter中的Tk倦逐,然后調(diào)用mainloop()函數(shù)」梗可以得到如下窗口檬姥。
2.窗口的屬性
方法名稱 | 說明 |
---|---|
title() | 設(shè)置窗口標題,默認為tk |
geometry("widthxheight+x+y" | 設(shè)置窗口的寬粉怕、高和位置健民,單位為像素 |
maxsize(width,height) | 窗口縮放時的最大寬和高 |
minsize(width,height) | 窗口縮放時的最小寬和高 |
configure(bg="color") | 窗口的背景顏色 |
resizable(True,True) | 設(shè)置是否可以更改窗口大小,第一個參數(shù)是寬斋荞,第二個是高荞雏,設(shè)置鎖定窗口大小,則設(shè)置resizeable(0,0) |
state("zoomed") | 最大化窗口 |
iconify() | 最小化窗口 |
iconbitmap("xx.ico") | 更改默認窗口圖標 |
推薦自己親自試試平酿。
3.設(shè)置窗口
tkinter模塊中有兩個可以獲取當前屏幕大小的函數(shù)
winfo_screenwidth()------可以獲取當前屏幕寬度
winfo_screenheight()------可以獲取當前屏幕高度
下面是一個獲取屏幕大小凤优,然后使我們的窗口始終置于屏幕中央的小栗子:
# 獲取屏幕大小,使窗口始終置于屏幕中央
import tkinter as tk
myWindow = tk.Tk()
screenWidth = myWindow.winfo_screenwidth()
screenHeight = myWindow.winfo_screenheight()
w = 500
h = 400
x = (screenWidth - w)/2
y = (screenHeight - h)/2
myWindow.geometry("%dx%d+%d+%d" % (w,h,x,y))
myWindow.mainloop()
二蜈彼、窗口的組件(Widget)
1.Tkinter的基本組件
Tkinter類 | 組件名稱 |
---|---|
Label | 標簽 |
Button | 按鈕 |
Entry | 文本框 |
Radiobutton | 單選按鈕 |
Checkbutton | 多選按鈕 |
Frame | 框架 |
LabelFrame | 標簽框架 |
Toplevel | 上層窗口 |
Scale | 滑動條 |
Spinbox | 可微調(diào)輸入控件 |
Message | 消息 |
Listbox | 列表框 |
Scrollbar | 滾動條 |
OptionMenu | 下拉式菜單 |
PanedWindow | 面板 |
Menu | 菜單 |
Text | 文字區(qū)域 |
Canvas | 畫布 |
2.Tkinter.ttk 的組件
由于Tkinter中的組件比較丑筑辨,無法滿足人民日益增長的審美需求,所以Tkinter在后來引入了ttk作為補充(主要就是進行了包裝幸逆、美化)棍辕,并使用了強大的Combobox取代了原來的Listbox,新增了部分現(xiàn)在常用的組件暮现。
ttk繼承的組件
Tkinter類和ttk類都有 | 組件名稱 |
---|---|
Label | 標簽 |
Button | 按鈕 |
Entry | 文本框 |
Radiobutton | 單選按鈕 |
Checkbutton | 多選按鈕 |
Frame | 框架 |
LabelFrame | 標簽框架 |
Scale | 滑動條 |
Scrollbar | 滾動條 |
PanedWindow | 面板 |
Menu | 菜單 |
ttk新增的組件
Tkinter.ttk類 | 組件名稱 |
---|---|
Combobox | 組合框 |
LabeledScale | 帶標簽的滑動條 |
Notebook | 多文檔窗口 |
Progressbar | 進度條 |
Separator | 分割線 |
Treeview | 樹 |
3. 導(dǎo)入ttk模塊
最簡單的
from tkinter import ttk
由于部分ttk組件與tkinter組件一樣,而且更好看楚昭,所以可以考慮覆蓋原有的tkinter組件:
from tkinter import *
from tkinter.ttk import *
使用ttk栖袋,不僅更好看,還能跨平臺使用抚太,但是并沒有100%兼容塘幅。
比如,fg尿贫、bg參數(shù)或一些外觀相關(guān)的參數(shù)tk和ttk是不相同电媳。ttk使用的是ttk.Style類別。
4.組件的通用屬性
通用的屬性 | 含義 |
---|---|
Dimensions | 大小 |
Colors | 顏色 |
Fonts | 字形 |
Anchor | 指定組件內(nèi)的信息 |
Relief styles | 屬性邊框 |
Bitmaps | 顯示位圖 |
Cursors | 鼠標外形 |
Command | 關(guān)聯(lián)的命令方法 |
5.組件的通用方法
通用的方法 | 參數(shù) |
---|---|
Configuration | config(option=value):可以在建立時設(shè)置庆亡,也可以在程序執(zhí)行時使用config( )重新設(shè)置匾乓。cget("option"):取得option參數(shù)值。keys( ):可以用此方法獲得所有該Widget的參數(shù) |
Event Processing | mainloop( ):讓程序繼續(xù)執(zhí)行又谋,同時進入等待與處理窗口事件拼缝。quit( ):Python Shell窗口結(jié)束,但是所建窗口繼續(xù)執(zhí)行搂根。update( ):更新窗口畫面 |
Event callbacks | bind(event,callback):事件綁定珍促。unbind(event):解除綁定 |
Alarm handlers | 間隔指定時間后調(diào)用callback( )方法 |