tkinter模块(二)

标准对话框

  • 颜色选择器

from tkinter.colorchooser import askcolor

askcolor()返回一个二元元组,((R,G,B),#ffffff)

  • 文件(文件夹)选择器

    filedialog提供一系列简易的获取文件路径的方法,它会调用操作系统的文件管理窗口,返回文件路径字符串(字符串列表)、目录字符串或者打开的文件对象(对象列表)。

    注意:当使用苹果OS X系统执行代码的时候会发生bug,获取文件路径后有可能(比如在获取文件后马上切换桌面空间,再切回来)会再次出现一个文件选择框,而且整个程序关闭前关不掉,但不影响程序其他功能使用。同时系统提示FIFinderSyncExtensionHost类存在两个实现,没有定义用哪个。网上查了下,这个问题自Mac OS High Sierra版本就存在了,目前无解。

from tkinter.filedialog import *

def askopenfilename(**options):
    "返回一个文件路径字符串"

    return Open(**options).show()

def asksaveasfilename(**options):
    "返回一个文件路径字符串,文件名是自己输入的"

    return SaveAs(**options).show()

def askopenfilenames(**options):
    "支持多选,返回一个文件路径字符串列表,如果取消的话返回一个空列表"
    
    options["multiple"]=1
    return Open(**options).show()

# FIXME: are the following  perhaps a bit too convenient?

def askopenfile(mode = "r", **options):
    "返回一个只读文件对象"

    filename = Open(**options).show()
    if filename:
        return open(filename, mode)
    return None

def askopenfiles(mode = "r", **options):
    "支持多选,返回一个只读文件对象列表,如果取消的话返回一个空列表"

    files = askopenfilenames(**options)
    if files:
        ofiles=[]
        for filename in files:
            ofiles.append(open(filename, mode))
        files=ofiles
    return files


def asksaveasfile(mode = "w", **options):
    "返回一个可写入的文件对象"

    filename = SaveAs(**options).show()
    if filename:
        return open(filename, mode)
    return None

def askdirectory (**options):
    "返回一个目录路径字符串"
    
    return Directory(**options).show()
  • Messagebox(弹出提示框)

    下面是Messagebox模块部分源码,很容易读懂,唯一需要注意的是有些函数的返回值是字符串(yes/no),有些函数返回的是bool值或None

from tkinter.messagebox import *

def showinfo(title=None, message=None, **options):
    "Show an info message"
    return _show(title, message, INFO, OK, **options)
  # 返回yes/no

def showwarning(title=None, message=None, **options):
    "Show a warning message"
    return _show(title, message, WARNING, OK, **options)
  # 返回yes/no

def showerror(title=None, message=None, **options):
    "Show an error message"
    return _show(title, message, ERROR, OK, **options)
  # 返回yes/no

def askquestion(title=None, message=None, **options):
    "Ask a question"
    return _show(title, message, QUESTION, YESNO, **options)
  # 返回yes/no

def askokcancel(title=None, message=None, **options):
    "Ask if operation should proceed; return true if the answer is ok"
    s = _show(title, message, QUESTION, OKCANCEL, **options)
    return s == OK
  # 返回BOOl值

def askyesno(title=None, message=None, **options):
    "Ask a question; return true if the answer is yes"
    s = _show(title, message, QUESTION, YESNO, **options)
    return s == YES
  # 返回BOOl值

def askyesnocancel(title=None, message=None, **options):
    "Ask a question; return true if the answer is yes, None if cancelled."
    s = _show(title, message, QUESTION, YESNOCANCEL, **options)
    # s might be a Tcl index object, so convert it to a string
    s = str(s)
    if s == CANCEL:
        return None
    return s == YES
  # 返回BOOl值,cancel时返回None

def askretrycancel(title=None, message=None, **options):
    "Ask if operation should be retried; return true if the answer is yes"
    s = _show(title, message, WARNING, RETRYCANCEL, **options)
    return s == RETRY
  # 返回BOOl值 
  • 简单输入框

from tkinter.simpledialog import *

askinteger(title, prompt, **kw) #输入一个整数,如果类型错误将给出一个error弹框提示
askfloat(title, prompt, **kw) #输入一个浮点数,如果类型错误将给出一个error弹框提示
askstring(title, prompt, **kw) #输入一个字符串,如果类型错误将给出一个error弹框提示

本文中大部分代码来自python3.7/tkinter模块源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值