在GUI編程中,對話框是用戶交互和檢索信息的重要控制項。今天,我們對tkinter中常用的對話框進行匯總。
tkinter模塊的子模塊messagebox、filedialog、colorchooser、simpledialog中包括了一些常用的預定義好的對話框,當然也可以通過繼承Toplevel創建自定義的對話框。如果對於界面顯示沒有太嚴苛的要求的話,建議還是使用預定義的對話框,無論從功能還是容錯機制上使用預定義好的對話框都是比較有優勢的。下面我們對這些對話框進行梳理匯總。
通用消息對話框
子模塊messagebox主要主要包含askokcancel、askquestion、askretrycancel、askyesno、showerror、showinfo、showwarning等函數。簡單將他們歸類為提問類和顯示類逐一對它們的用法進行解釋。
提問類
askokcancel(title=None, message=None, **options):OK\Cancel對話框
askquestion(title=None, message=None, **options):Yes\No問題對話框
askretrycancel(title=None, message=None, **options):Retry\Cancel對話框
askyesno(title=None, message=None, **options):Yes\No是否對話框
顯示類
showerror(title=None, message=None, **options):錯誤消息對話框
showinfo(title=None, message=None, **options):信息消息對話框
showwarning(title=None, message=None, **options):警告消息對話框
參數解釋
title:對話框窗口標題message:顯示內容(可使用\n、\t等參數對顯示內容進行換行、對齊設置)default=C:默認按鈕,取值為模塊常量CANCEL、GNORE、OK、NO、RETRY、YES,默認為CANCEL按鈕icon=I:圖標取值為模塊常量ERROR、INFO、QUESTION、WARNINGparent=W:父窗口,默認為根窗口
實例演示
from tkinter.messagebox import *
r1 = askokcancel(title='askokcancel', message='是否退出程序?')
r2 = askquestion(title='askquestion', message='確定修改的內容?\n將X修改為Y')
r3 = askyesno(title='askyesno', message='你的名字叫Lucy?')
r4 = askretrycancel(title='askretrycancel', message='系統繁忙,是否重試?')
showerror(title='系統錯誤', message='系統出錯,無法完成任務')
showinfo(title='成功提示', message='恭喜,登錄成功!')
showwarning(title='預警信息', message='系統垃圾過多,請清理後重試操作!')
對於問題類對話框,返回『True』或者『False』,然後判斷執行下一步操作。
文件對話框
子模塊filedialog主要包含askdirectory、askopenfile、askopenfiles、askopenfilename、askopenfilenames、asksaveasfile、asksaveasfilename等函數,用於彈出打開目錄,打開、保存文件對話框。
askdirectory(**options):打開目錄對話框,返回目錄名稱
askopenfile(**options):打開文件對話框,返回打開的文件對象
askopenfiles(**options):打開文件對話框,返回打開文件對象列表
askopenfilename(**options):打開文件對話框,返回打開文件名稱
askopenfilenames(**options):打開文件對話框,返回打開文件名稱列表
asksaveasfile(mode='w', **options):打開保存對話框,返回保存的文件對象
asksaveasfilename(mode='w', **options):打開保存對話框,返回保存的文件名
參數解釋
defaultextension=s:默認後綴.xxx。用戶沒有輸入後綴自動添加filetypes=[(label1, pattern1), (label2, pattern2), ...]:文件過濾器initialdir=D:初始目錄initialfile=F:初始文件parent=W:父窗口,默認為根窗口title=T:窗口標題實例演示
from tkinter.filedialog import *
f = askopenfilename(title='askopenfilename', initialdir="D:", filetypes=[('所有文件', '*.*'), ('Python源文件', '.py')])
f1 = asksaveasfilename(title='asksaveasfilename', initialdir="E:", filetypes=[('所有文件', '*.*'), ('Python源文件', '.py')])
顏色選擇對話框
tkinter子模塊colorchooser包含顏色選擇對話框函數askcolor
使用方法如下
from tkinter.colorchooser import askcolor
askcolor(color=None, **options):打開顏色選擇對話框
參數解釋
color:為初始顏色partent=W:父窗口,默認為根窗口title=T:窗口標題有意思的是該函數返回一個元組信息,結構是這樣的((R, G, B), color),RGB的值是0-255之間的整數,color是顏色的十六進位表示。
實例演示
from tkinter.colorchooser import askcolor
c = askcolor(color='yellow', title='顏色選取')
print(c)
簡單對話框
tkinter子模塊simpledialog中包含如下函數,用於打開輸入對話框的函數:
askfloat(title, prompt, **kw):打開輸入對話框,輸入並返回浮點數
askinteger(title, prompt, **kw):打開輸入對話框,輸入並返回整數
askstring(title, prompt, **kw):打開輸入對話框,輸入並返回字符串
參數解釋
title:窗口標題prompt:提示文本信息initialvalue:初始值minvalue:最小值max value:最大值實例演示
from tkinter import *
from tkinter.simpledialog import *
root = Tk()
i = askinteger('請輸入', prompt='輸入一個整數:', initialvalue=100, maxvalue=1000, minvalue=1)
f = askfloat('請輸入', prompt='輸入一個實數:', initialvalue=12.0)
s = askstring('請輸入', prompt='輸入字符串:', initialvalue='Yes or No?')
print(i, f, s)