标准对话框
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()
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模块源码