资讯专栏INFORMATION COLUMN

[译][Tkinter 教程11] 对话框和消息框

Anchorer / 1215人阅读

摘要:已获原作者授权原系列地址简介提供了一系列的对话框可以用来显示文本消息提示警告信息和错误信息选择文件或颜色其他一些简单的对话框还可以请求用户输入文本整数或数字下面是一个典型的对话框使用场景在应用程序中经常会有退出按钮如下点击按钮会弹出一个确认

已获原作者授权. 原系列地址: Python Tkinter
简介

Tkinter 提供了一系列的对话框, 可以用来显示文本消息, 提示警告信息和错误信息, 选择文件或颜色. 其他一些简单的对话框还可以请求用户输入文本, 整数或数字.
下面是一个典型的对话框使用场景. 在应用程序中经常会有 "退出" 按钮, 如下:

点击 "quit" 按钮会弹出一个确认退出对话框:

我们假设 "退出" 功能还没有最终完成, 这时我们会弹出一个只带 OK 按钮的消息对话框, 提示用户该功能还不可用:

如果用户点击了 "NO" 按钮, 我们可以弹出以下消息框:

让我们回到第一个窗口, 就是那个带有 "quit" 和 "answer" 按钮的对话框. 如果点击 "answer" 按钮, 我们可以弹出一个错误对话框, 告诉用户 "Answer" 功能还不可用:

上面描述的逻辑可用如下代码实现:

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 则返回 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)
给出一条警告信息

文件选择对话框

几乎所有实用的桌面应用都有 打开文件以读取/写入 的功能. 有些程序还需要提供选择目录功能. 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.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41507.html

相关文章

  • [][Tinkter 教程05] Radiobutton 控件

    摘要:已获原作者授权原系列地址单选按钮是一种可在多个预先定义的选项中选择出一项的控件单选按钮可显示文字或图片显示文字时只能使用预设字体该控件可以绑定一个函数或方法当单选按钮被选择时该函数或方法将被调用单选按钮这个名字来源于收音机上的调频按钮这些按 已获原作者授权. 原系列地址: Python Tkinter Radio Buttons 单选按钮是一种可在多个预先定义的选项中选择出一项的 T...

    shusen 评论0 收藏0
  • [][Tkinter 教程02] Message 控件

    摘要:已获原作者授权原系列地址控件控件用来展示一些文字短消息和控件有些类似但在展示文字方面比要灵活比如控件可以改变字体而控件只能使用一种字体它提供了一个换行对象以使文字可以断为多行它可以支持文字的自动换行及对齐这里要澄清一下前面提到的控件可以改变 已获原作者授权. 原系列地址: Python Tkinter Message 控件 Message 控件用来展示一些文字短消息. Message...

    JowayYoung 评论0 收藏0
  • [][Tkinter 教程03] Button 控件

    摘要:已获原作者授权原系列地址简介控件是一种标准控件用来展现不同样式的按钮控件被用以和用户交互比如按钮被鼠标点击后某种操作被启动和控件类似按钮可以展示图片或者文字不同的是控件可以指定字体控件只能使用单一的字体上的文字可以多行显示可以将一个函数或方 已获原作者授权. 原系列地址: Python Tkinter 简介 Button 控件是一种标准 Tkinter 控件, 用来展现不同样式的按钮...

    googollee 评论0 收藏0
  • [][Tkinter 教程14] menu 菜单

    摘要:已获原作者授权原系列地址简介一提到这个词很多人首先想到的是餐馆里的菜单虽然餐馆菜单和计算机程序中的菜单看起来一点也不像但他们确实有很多共同点在餐馆中菜单列举了所有菜品和饮料在计算机程序中菜单通过图形界面展示了应用程序可用的命令和功能在用户界 已获原作者授权. 原系列地址: Python Tkinter 简介 一提到menu这个词, 很多人首先想到的是餐馆里的菜单. 虽然餐馆菜单和计算...

    joyqi 评论0 收藏0
  • [][Tkinter 教程04] Variable 类

    摘要:已获原作者授权原系列地址类有些控件比如控件控件等可以通过传入特定参数直接和一个程序变量绑定这些参数包括这种绑定是双向的如果该变量发生改变与该变量绑定的控件也会随之更新这些控制变量和一般的变量一样都是用来保存某个值的但一般的变量不能被传递给或 已获原作者授权. 原系列地址: Python Tkinter Variable 类 有些控件 (比如 Entry 控件, Radiobutton...

    zilu 评论0 收藏0

发表评论

0条评论

Anchorer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<