[譯][Tkinter 教程11] 對話框和消息框

原系列地址: 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.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容