已獲原做者受權. 原系列地址: Python Tkinter
Tkinter 提供了一系列的對話框, 能夠用來顯示文本消息, 提示警告信息和錯誤信息, 選擇文件或顏色. 其餘一些簡單的對話框還能夠請求用戶輸入文本, 整數或數字.
下面是一個典型的對話框使用場景. 在應用程序中常常會有 "退出" 按鈕, 以下:
php
點擊 "quit" 按鈕會彈出一個確認退出對話框:
python
咱們假設 "退出" 功能尚未最終完成, 這時咱們會彈出一個只帶 OK 按鈕的消息對話框, 提示用戶該功能還不可用:
linux
若是用戶點擊了 "NO" 按鈕, 咱們能夠彈出如下消息框:
segmentfault
讓咱們回到第一個窗口, 就是那個帶有 "quit" 和 "answer" 按鈕的對話框. 若是點擊 "answer" 按鈕, 咱們能夠彈出一個錯誤對話框, 告訴用戶 "Answer" 功能還不可用:
ide
上面描述的邏輯可用以下代碼實現:oop
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)
詢問用戶操做是否繼續. 選擇 ok 則返回 Trueui
askquestion(title=None, message=None, **options)
顯示一個問題spa
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)
給出一條警告信息
幾乎全部實用的桌面應用都有 打開文件以讀取/寫入 的功能. 有些程序還須要提供選擇目錄功能. 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" 字樣的按鈕, 點擊這個按鈕則顯示以下文件選擇對話框:
對話框的樣式依賴於運行程序的操做系統平臺. 上面的窗口是在一部裝有 gnome 桌面系統的 linux 操做系統中的顯示結果. 若是咱們在 Windows7 下運行這段程序, 則會獲得以下窗口:
有些應用須要用戶選擇顏色. Tkinter 提供了這樣一種對話框. tkColorChooser 包中包含了這個功能:
result = tkColorChooser.askColor ( color, option=value, ...)
若是用戶點擊顏色選擇對話框的確認按鈕, askColor()
方法會返回一個二元組, 其中的元素均可以用來表示所選擇的顏色: ((106, 150, 98), '#6a9662')
. 第一個元素是一個表明三原色 RGB 的三元組, 每種原色的取值範圍爲 0-255. 第二個元素是一種16進製表示顏色的方法. 若是用戶點擊取消按鈕, askColor()
方法一樣會返回一個二元組: (None, None).askColor()
方法中的 options
參數能夠是如下選項:
color:
用覺得顏色選擇對話框設置一個默認選擇的顏色. 若是未指定 color 選項, 則默認選擇顏色爲灰色.
title:
顯示在對話框頂部標題欄的標題文本. 默認的標題爲 "Color".
parent:
設置後, 顏色選擇對話框會在 parent 這個窗口之上顯示. 默認行爲是在 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()
顏色選擇對話框的樣式一樣取決於運行程序的操做系統及窗口系統. 在 gnome 窗口系統下, 這個對話框顯示以下:
在 Windows7 系統下, 顏色選擇對話框顯示以下:
全系列:
[譯][Tkinter 教程01] 入門: Label 控件
[譯][Tkinter 教程02] Message 控件
[譯][Tkinter 教程03] Button 控件
[譯][Tkinter 教程04] Variable 類
[譯][Tinkter 教程05] Radiobutton 控件
[譯][Tkinter 教程06] Checkbox 控件
[譯][Tkinter 教程07] Entry 控件
[譯][Tkinter 教程08] Canvas 圖形繪製
[譯][Tkinter 教程09] Scale 控件
[譯][Tkinter 教程10] Text 控件
[譯][Tkinter 教程11] 對話框和消息框
[譯][Tkinter 教程12] 佈局管理 (Pack Place Grid)
[譯][Tkinter 教程13] Mastermind 遊戲
[譯][Tkinter 教程14] menu 菜單
[譯][Tkinter 教程15] event 事件綁定
譯者水平有限, 若有疏漏, 歡迎指正.
已得到原做者受權. 原文地址: Dialogs.