首页 > Python基础教程 > Tkinter
阅读:3,737
Python Tkinter对话框创建及使用(附带实例)
对话框也是图形界面编程中很常用的组件,通常用于向用户生成某种提示信息,或者请求用户输入某些简单的信息。
对话框看上去有点类似于顶级窗口,但对于对话框有如下两点需要注意:
Tkinter 在 simpledialog 和 dialog 模块下分别提供了 SimpleDialog 类和 Dialog 类,它们都可作为普通对话框使用,而且用法也差不多。
在使用 simpledialog.SimpleDialog 创建对话框时,可指定如下选项:
如果使用 dialog.Dialog 创建对话框,除可使用 master 指定对话框的属主窗口之外,还可通过 dict 来指定如下选项:
对比上面介绍不难发现,simpledialog.SimpleDialog 和 dialog.Dialog 所支持的选项大同小异,区别只是 dialog.Dialog 需要使用 dict 来传入多个选项。
如下程序分别示范了使用 SimpleDialog 和 Dialog 来创建对话框:
运行上面程序,单击界面上的“打开 SimpleDialog”按钮,可以看到如图 1 所示的效果。
图 1 SimpleDialog 对话框
程序中 ① 号代码打印了该对话框 go() 方法的返回值,该返回值会获取用户单击了对话框的哪个按钮。如果用户通过对话框右上角的X 按钮关闭对话框,则返回 cancel 选项指定的值。
如果单击界面上的“打开 Dialog”按钮,可以看到如图 2 所示的效果。
图 2 Dialog 对话框
程序中 ② 号代码打印了该对话框 num 属性的值,该返回值会获取用户单击了对话框的哪个按钮。
在图 2 所示对话框的左边还显示了一个问号图标,这是 Python 内置的 10 个位图之一,可以直接使用。共有如下几个常量可用于设置位图:
对话框看上去有点类似于顶级窗口,但对于对话框有如下两点需要注意:
- 对话框通常依赖其他窗口,因此程序在创建对话框时同样需要指定 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 所示的效果。
图 1 SimpleDialog 对话框
程序中 ① 号代码打印了该对话框 go() 方法的返回值,该返回值会获取用户单击了对话框的哪个按钮。如果用户通过对话框右上角的X 按钮关闭对话框,则返回 cancel 选项指定的值。
如果单击界面上的“打开 Dialog”按钮,可以看到如图 2 所示的效果。
图 2 Dialog 对话框
程序中 ② 号代码打印了该对话框 num 属性的值,该返回值会获取用户单击了对话框的哪个按钮。
在图 2 所示对话框的左边还显示了一个问号图标,这是 Python 内置的 10 个位图之一,可以直接使用。共有如下几个常量可用于设置位图:
- “error”
- “gray75”
- “gray50”
- “gray25”
- “gray12”
- “howglass”
- “info”
- “questhead”
- “question”
- “warning”
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频