Python Tkinter对话框创建及使用(附带实例)

广告位

对话框也是图形界面编程中很常用的组件,通常用于向用户生成某种提示信息,或者请求用户输入某些简单的信息。 对话框…

对话框也是图形界面编程中很常用的组件,通常用于向用户生成某种提示信息,或者请求用户输入某些简单的信息。

对话框看上去有点类似于顶级窗口,但对于对话框有如下两点需要注意:

  • 对话框通常依赖其他窗口,因此程序在创建对话框时同样需要指定 master 属性(该对话框的属主窗口)。
  • 对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开之后,该模式对话框总是位于它依赖的窗口之上;在模式对话框被关闭之前,它依赖的窗口无法获得焦点。

Tkinter 在 simpledialog 和 dialog 模块下分别提供了 SimpleDialog 类和 Dialog 类,它们都可作为普通对话框使用,而且用法也差不多。

在使用 simpledialog.SimpleDialog 创建对话框时,可指定如下选项:

  • title:指定该对话框的标题。
  • text:指定该对话框的内容。
  • button:指定该对话框下方的几个按钮。
  • default:指定该对话框中默认第几个按钮得到焦点。
  • cancel:指定当用户通过对话框右上角的X 按钮关闭对话框时,该对话框的返回值。

如果使用 dialog.Dialog 创建对话框,除可使用 master 指定对话框的属主窗口之外,还可通过 dict 来指定如下选项:

  • title:指定该对话框的标题。
  • text:指定该对话框的内容。
  • strings:指定该对话框下方的几个按钮。
  • default:指定该对话框中默认第几个按钮得到焦点。
  • bitmap:指定该对话框上的图标。

对比上面介绍不难发现,simpledialog.SimpleDialog 和 dialog.Dialog 所支持的选项大同小异,区别只是 dialog.Dialog 需要使用 dict 来传入多个选项。

如下程序分别示范了使用 SimpleDialog 和 Dialog 来创建对话框:

  from tkinter import *  # 导入ttk  from tkinter import ttk  # 导入simpledialog  from tkinter import simpledialog  # 导入dialog  from tkinter import dialog    class App:      def __init__(self, master):          self.master = master          self.initWidgets()      def initWidgets(self):          self.msg = 'C语言中文网成立于 2012 年初,目前已经运营了将近 5 年,我们致力于分享精品教程,帮助对编程感兴趣的读者。'          # 创建2个按钮,并为之绑定事件处理函数          ttk.Button(self.master, text='打开SimpleDialog',              command=self.open_simpledialog # 绑定open_simpledialog方法              ).pack(side=LEFT, ipadx=5, ipady=5, padx= 10)          ttk.Button(self.master, text='打开Dialog',              command=self.open_dialog # 绑定open_dialog方法              ).pack(side=LEFT, ipadx=5, ipady=5, padx = 10)      def open_simpledialog(self):          # 使用simpledialog.SimpleDialog创建对话框          d = simpledialog.SimpleDialog(self.master, # 设置该对话框所属的窗口              title='SimpleDialog测试', # 标题              text=self.msg,  # 内容              buttons=["是", "否", "取消"],              cancel=3,              default=0 # 设置默认是哪个按钮得到焦点          )          print(d.go())  #①      def open_dialog(self):          # 使用dialog.Dialog创建对话框          d = dialog.Dialog(self.master # 设置该对话框所属的窗口              , {'title': 'Dialog测试',  # 标题              'text':self.msg, # 内容              'bitmap': 'question', # 图标              'default': 0,  # 设置默认选中项              # strings选项用于设置按钮              'strings': ('确定',                  '取消',                  '退出')})          print(d.num)  #②    root = Tk()  root.title("对话框测试")  App(root)  root.mainloop()

上面程序中,第 24 行代码使用 simpledialog.SimpleDialog 创建了对话框,同时第 34 行代码使用 dialog.Dialog 创建了对话框。从代码中可以看到,创建两个对话框的代码相似,区别只是创建 dialog.Dialog 时需要使用 dict 传入选项。

运行上面程序,单击界面上的“打开 SimpleDialog”按钮,可以看到如图 1 所示的效果。

Python Tkinter对话框创建及使用(附带实例)
图 1 SimpleDialog 对话框

程序中 ① 号代码打印了该对话框 go() 方法的返回值,该返回值会获取用户单击了对话框的哪个按钮。如果用户通过对话框右上角的X 按钮关闭对话框,则返回 cancel 选项指定的值。

如果单击界面上的“打开 Dialog”按钮,可以看到如图 2 所示的效果。

Python Tkinter对话框创建及使用(附带实例)
图 2 Dialog 对话框

程序中 ② 号代码打印了该对话框 num 属性的值,该返回值会获取用户单击了对话框的哪个按钮。

在图 2 所示对话框的左边还显示了一个问号图标,这是 Python 内置的 10 个位图之一,可以直接使用。共有如下几个常量可用于设置位图:

  • “error”
  • “gray75”
  • “gray50”
  • “gray25”
  • “gray12”
  • “howglass”
  • “info”
  • “questhead”
  • “question”
  • “warning”

关于作者: Python基础入门教程

为您推荐

广告位

发表评论