首页 > Tkinter 阅读:1,202

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站:Tkinter对话框控件

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站,东-风-风-神-品-牌-汽-车惠-州-疫-情-防-控-新-通-告百-年-风-华-盛-世-所-愿-视-频养-老-照-护-员-简-介

白-金-国-际-代-理,招-生-数-1的-学-校专-科-算-真-正-的-大-学-吗买-房-子-要-交-地-契-税孩-子-的-爸-爸-什-么-都-不-教-孩-子

我-要-下-载-龙-8-国-际-官-方-网,中-广-核-矿-业-收-购景-区-举-办-建-党-一-百-周-年-活-动重-点-中-考-时-间抗-体-指-哪-些

在前面的章节中,我们花费了大量的时间讲解了 Tkinter 中常用基本控件,通过对这些控件的学习,我们对  GUI 开发有了基本的认识与掌握,一个完整的 GUI 程序就是由这些组件以合理、美观的布局方式构成的。

除了基本的控件之外,Tkinter 还提供了三种对话框控件:
  • 文件选择对话框:filedailog
  • 颜色选择对话框:colorchooser
  • 消息对话框:messagebox

这些对话框的使用能够在一定程度上增强用户的交互体验,下面对这些对话框控件进行详细地介绍。

文件选择对话框

文件对话框在 GUI 程序中经常的使用到,比如上传文档需要从本地选择一个文件,包括文件的打开和保存功能都需要一个文件对话框来实现。Tkinter 提供文件对话框被封装在tkinter.filedailog模块中,该模块提供了有关文件对话框的常用函数,经常使用的有以下几个:

方法 说明
Open() 打开个某个文件
SaveAs() 打开一个保存文件的对话框
askopenfilename() 打开某个文件,并以包函文件名的路径作为返回值
askopenfilenames() 同时打开多个文件,并以元组形式返回多个文件名
askopenfile() 打开文件,并返回文件流对象
askopenfiles() 打开多个文件,并以列表形式返回多个文件流对象
asksaveasfilename() 选择以什么文件名保存文件,并返回文件名
asksaveasfile() 选择以什么类型保存文件,并返回文件流对象
askdirectory 选择目录,并返回目录名

上述方法的常用参数值如下所示:

参数 说明
defaultextension 指定文件的后缀名,当保存文件时自动添加文件名,如果自动添加了文件的后缀名,则该选项值不会生效
filetypes 指定筛选文件类型的下拉菜单选项,该选项值是由 2 元祖构成的列表,其中每个二元祖由两部分组成 (类型名,后缀),比如 filetypes = [("PNG","*.png"), ("JPG", "*.jpg"), ("GIF","*.gif"),("文本文件","*.txt")...] 
initialdir 指定打开/保存文件的默认路径,默认路径是当前文件夹
parent  如果不指定该选项,那么对话框默认显示在根窗口上,通过设置该参数可以使得对话框显示在子窗口上
title 指定文件对话框的标题

下面看一组具体的实例应用:
from tkinter import *
import tkinter.filedialog  # 注意次数要将文件对话框导入

# 定义一个处理文件的相关函数
def askfile():
    # 从本地选择一个文件,并返回文件的目录
    filename = tkinter.filedialog.askopenfilename()
    if filename != '':
         lb.config(text= filename)
    else:
         lb.config(text='您没有选择任何文件')

root = Tk()
root.config(bg='#87CEEB')
root.title("C语言中文网")
root.geometry('400x200+300+300')
root.iconbitmap('C:/Users/Administrator/Desktop/C语言中文网logo.ico')
btn=Button(root,text='选择文件',relief=RAISED,command=askfile)
btn.grid(row=0,column=0)
lb = Label(root,text='',bg='#87CEEB')
lb.grid(row=0,column=1,padx=5)
# 显示窗口
root.mainloop()
程序运行结果:

图1:文件选择界面

下面再看一组“保存文件”的示例代码如下:
import tkinter as tk
from tkinter import filedialog
from PIL import Image

def open_img():
    try:
        global img
        filepath = filedialog.askopenfilename() # 打开文件,返回该文件的完整路径
        filename.set(filepath)
        img = Image.open(filename.get())
    except Exception as e:
        print("您没有选择任何文件",e)


def save_png():
    try:

        filetypes = [("PNG","*.png"), ("JPG", "*.jpg"), ("GIF","*.gif"),("txt files","*.txt"),('All files','*')]
        # 返回一个 pathname 文件路径字符串,如果取消或者关闭则返回空字符,返回文件如何操作是后续代码的事情,
        # 该函数知识返回选择文件的文件名字,不具备保存文件的能力
        filenewpath= filedialog.asksaveasfilename(title='保存文件',
                                                filetypes=filetypes,
                                                defaultextension='.png',
                                                initialdir='C:/Users/Administrator/Desktop' )
        path_var.set(filenewpath)
        # 保存文件
        img.save(str(path_var.get()))
    except Exception as e:
        print(e)

window = tk.Tk()
window.title("C语言中文网")
window.geometry('400x200+300+300')
window.iconbitmap('C:/Users/Administrator/Desktop/C语言中文网logo.ico')

filename = tk.StringVar()
path_var = tk.StringVar()
# 定义读取文件的组件
entry = tk.Entry(window, textvariable=filename)
entry.grid(row=1, column=0, padx=5, pady=5)
tk.Button(window, text='选择文件', command=open_img).grid(row=1, column=1, padx=5, pady=5)

# 定义保存文件的组件
entry1 = tk.Entry(window, textvariable=path_var)
entry1.grid(row=2, column=0, padx=5, pady=5)
tk.Button(window, text='保存文件', command=save_png).grid(row=2, column=1, padx=5, pady=5)
window.mainloop()
程序运行结果:

tkinter文件选择对话框
图2:程序运行结果

颜色选择对话框

颜色选择对话框(colorchooser),提供了一个非常友善的颜色面板,它允许用户选择自己所需要的颜色。 当用户在面板上选择一个颜色并按下“确定”按钮后,它会返回一个二元祖,其第 1 个元素是选择的 RGB 颜色值,第 2 个元素是对应的 16 进制颜色值。

颜色选择对话款主要应用在画笔、涂鸦等功能上,通过它可以绘制出五彩缤纷的颜色,该对话框的使用非常简单,主要有以下两个常用方法:

方法 说明
askcolor() 打开一个颜色对话框,并将用户选择的颜色值以元组的形式返回(没选择返回None),格式为((R, G, B), "#rrggbb")
Chooser() 打开一个颜色对话框,并用户选择颜色确定后,返回一个二元组,格式为((R, G, B), "#rrggbb")

常用的颜色对话框的参数值如下表所示:

属性 说明
default 要显示的初始的颜色,默认颜色是浅灰色(light gray)
title 指定颜色选择器标题栏的文本,默认标题为“颜色”
parent 1. 如果不指定该选项,那么对话框默认显示在根窗口上
2. 如果想要将对话框显示在子窗口上,那么可以设置 parent = 子窗口对象

下面看一组简单的使用示例:
import tkinter as tk
from tkinter import colorchooser
root = tk.Tk()
root.title("颜色选择")
root.geomet