原系列地址: Python Tkinter
簡介
Tkinter 提供了一系列的對話框, 可以用來顯示文本消息, 提示警告信息和錯誤信息, 選擇文件或顏色. 其他一些簡單的對話框還可以請求用戶輸入文本, 整數(shù)或數(shù)字.
下面是一個典型的對話框使用場景. 在應(yīng)用程序中經(jīng)常會有 "退出" 按鈕, 如下:
點擊 "quit" 按鈕會彈出一個確認(rèn)退出對話框:
我們假設(shè) "退出" 功能還沒有最終完成, 這時我們會彈出一個只帶 OK 按鈕的消息對話框, 提示用戶該功能還不可用:
如果用戶點擊了 "NO" 按鈕, 我們可以彈出以下消息框:
讓我們回到第一個窗口, 就是那個帶有 "quit" 和 "answer" 按鈕的對話框. 如果點擊 "answer" 按鈕, 我們可以彈出一個錯誤對話框, 告訴用戶 "Answer" 功能還不可用:
上面描述的邏輯可用如下代碼實現(xiàn):
from Tkinter import *
from tkMessageBox import *
def answer():
showerror("Answer", "Sorry, no answer available")
def callback():
if askyesno('Verify', 'Really quit?'):
showwarning('Yes', 'Not yet implemented')
else:
showinfo('No', 'Quit has been cancelled')
Button(text='Quit', command=callback).pack(fill=X)
Button(text='Answer', command=answer).pack(fill=X)
mainloop()
消息框
消息框功能由 tkMessageBox 包提供, 其中包含了如下消息框類型:
askokcancel(title=None, message=None, **options)
詢問用戶操作是否繼續(xù). 選擇 ok 則返回 True
askquestion(title=None, message=None, **options)
顯示一個問題
askretrycancel(title=None, message=None, **options)
詢問用戶是否要重試操作. 選擇 ok 則返回 True
askyesno(title=None, message=None, **options)
顯示一個問題. 選擇 ok 則返回 True
askyesnocancel(title=None, message=None, **options)
顯示一個問題. 選擇 ok 則返回 True; 選擇 cancel 則返回 None
showerror(title=None, message=None, **options)
給出一條錯誤信息
showinfo(title=None, message=None, **options)
給出一條提示信息
showwarning(title=None, message=None, **options)
給出一條警告信息
文件選擇對話框
幾乎所有實用的桌面應(yīng)用都有 打開文件以讀取/寫入 的功能. 有些程序還需要提供選擇目錄功能. Tkinter 中的 tkFileDialog 包提供了這個功能.
from Tkinter import *
from tkFileDialog import askopenfilename
def callback():
name= askopenfilename()
print name
errmsg = 'Error!'
Button(text='File Open', command=callback).pack(fill=X)
mainloop()
上面的代碼運行后, 會顯示一個帶有 "File Open" 字樣的按鈕, 點擊這個按鈕則顯示如下文件選擇對話框:
對話框的樣式依賴于運行程序的操作系統(tǒng)平臺. 上面的窗口是在一部裝有 gnome 桌面系統(tǒng)的 linux 操作系統(tǒng)中的顯示結(jié)果. 如果我們在 Windows7 下運行這段程序, 則會得到如下窗口:
顏色選擇對話框
有些應(yīng)用需要用戶選擇顏色. Tkinter 提供了這樣一種對話框. tkColorChooser 包中包含了這個功能:
result = tkColorChooser.askColor ( color, option=value, ...)
如果用戶點擊顏色選擇對話框的確認(rèn)按鈕, askColor() 方法會返回一個二元組, 其中的元素都可以用來表示所選擇的顏色: ((106, 150, 98), '#6a9662') . 第一個元素是一個代表三原色 RGB 的三元組, 每種原色的取值范圍為 0-255. 第二個元素是一種16進制表示顏色的方法. 如果用戶點擊取消按鈕, askColor() 方法同樣會返回一個二元組: (None, None).
askColor() 方法中的 options 參數(shù)可以是以下選項:
color:
用以為顏色選擇對話框設(shè)置一個默認(rèn)選擇的顏色. 如果未指定 color 選項, 則默認(rèn)選擇顏色為灰色.
title:
顯示在對話框頂部標(biāo)題欄的標(biāo)題文本. 默認(rèn)的標(biāo)題為 "Color".
parent:
設(shè)置后, 顏色選擇對話框會在 parent 這個窗口之上顯示. 默認(rèn)行為是在 root 窗口之上顯示.
讓我們看一個例子:
from Tkinter import *
from tkColorChooser import askcolor
def callback():
result = askcolor(color="#6A9662",
title = "Bernd's Colour Chooser")
print result
root = Tk()
Button(root,
text='Choose Color',
fg="darkgreen",
command=callback).pack(side=LEFT, padx=10)
Button(text='Quit',
command=root.quit,
fg="red").pack(side=LEFT, padx=10)
mainloop()
顏色選擇對話框的樣式同樣取決于運行程序的操作系統(tǒng)及窗口系統(tǒng). 在 gnome 窗口系統(tǒng)下, 這個對話框顯示如下:
在 Windows7 系統(tǒng)下, 顏色選擇對話框顯示如下:
譯者水平有限, 如有疏漏, 歡迎指正.
已獲得原作者授權(quán). 原文地址: Dialogs.