24-Tkinter 组件-对话框

simpledialog输入对话框

引用tkinter.simpledialog包,可弹出输入对话框,用以接收用户的简单输入。

输入对话框常用 askstring()askinteger()askfloat() 三种函数,分别用于接收字符串、整数和浮点数类型的输入。

  • title:窗口标题
  • prompt:提示信息
  • **kw:其他选项
    • initialvalue:初始值
    • minvalue:最小值
    • maxvalue::最大值

**如下面的例子:**单击按钮,弹出输入对话框,接收文本输入显示在窗体的标签上。如下:

# coding = utf-8
# File date: Hi_2021/12/29 19:25
# File_name: 11_simpledialog输入对话框.py
from tkinter import *
from tkinter.messagebox import showinfo
from tkinter.simpledialog import askstring, askfloat, askinteger


class Application(Frame):
    def __init__(self, master=None):
        # 初始化并调用父类初始化
        super().__init__(master)
        self.master = master
        self.pack()

        self.create_widget()

    def create_widget(self):
        """创建组件"""
        b_askstring = Button(self, text="askstring", command=Application.a_askstring)
        b_askfloat = Button(self, text="askfloat", command=Application.a_askinteger)
        b_askinteger = Button(self, text="askinteger", command=Application.a_askfloat)

        # 布局
        b_askstring.grid(row=1, pady=10)
        b_askfloat.grid(row=2, pady=10)
        b_askinteger.grid(row=3, pady=10)

    @staticmethod
    def a_askstring():
        str_ask = askstring(title="字符串输入框对话框", prompt="输入文字", initialvalue="初始值")
        showinfo(title="提示标题", message=f"输入信息为{str_ask}\n输入信息字符类型为{type(str_ask)}")
        print(f"输入信息为{str_ask}\n输入信息字符类型为{type(str_ask)}")

    @staticmethod
    def a_askinteger():
        int_ask = askinteger(title="整数输入对话框", prompt="输入整数", initialvalue=50, minvalue=1, maxvalue=100)
        showinfo(title="提示标题", message=f"输入信息为{int_ask}\n输入信息字符类型为{type(int_ask)}")
        print(f"输入信息为{int_ask}\n输入信息字符类型为{type(int_ask)}")

    @staticmethod
    def a_askfloat():
        float_ask = askfloat(title="小数输入对话框", prompt="输入浮点数", initialvalue="初始值")
        showinfo(title="提示标题", message=f"输入信息为{float_ask}\n输入信息字符类型为{type(float_ask)}")
        print(f"输入信息为{float_ask}\n输入信息字符类型为{type(float_ask)}")


if __name__ == '__main__':
    root = Tk()
    root.geometry("200x200")
    root.title("GUI窗口标题")
    app = Application(master=root)

    root.mainloop()

filedialog文件选择对话框

引用tkinter.filedialog包,可弹出文件选择对话框,让用户直观地选择一个或一组文件,以供进一步的文件操作。

  • asksaveasfilename() 选择以什么文件名保存,返回文件名
  • asksaveasfile() 选择以什么文件保存,创建文件并返回文件流对象
  • askopenfilename() 选择打开什么文件,返回文件名
  • askopenfile() 选择打开什么文件,返回IO流对象
  • askdirectory() 选择目录,返回目录名
  • askopenfilenames() 选择打开多个文件,以元组形式返回多个文件名
  • askopenfiles() 选择打开多个文件,以列表形式返回多个IO流对象

参数:

选项含义
defaultextension默认扩展名,例如: deiautetension=”. ipg”,那么当用户输人一个文件名”FishC”的时候,文件名会 自动添加后缀为”FishC. ipg”。注意:如果用户输人文件名包含后缀,那么该选项不生效
filetypes指定筛选文件类型的下拉菜单选项,该选项的值是由2元组构成的列表。每个2元组由(类型名,后缀)构成,例如,filetypes=[(“PNG”, “. png”), (“JPG”,”.jpg”),(“GIF”,”. gif”)];新建时间可filetypes=[(“word文件”, “.docx”)]即可显示可选格式
initialdir指定打开/保存文件的默认路径。默认路径是当前文件夹
initialfile默认文件名
parent如果不指定该选项,那么对话框默认显示在根窗口上。如果想要将对话框显示在子窗口w上,那么可以设置parent=w
title指定文件对话框的标题栏文本
confirmoverwrite确认覆盖

colorchooser颜色选择对话框

引用tkinter.colorchooser包,可使用 askcolor()函数弹出模式颜色选择对话框,可以个性化地设置颜色属性。

函数的返回形式为包含RGB十进制浮点元组和RGB十六进制字符串的元组类型,可将其转换为字符串类型后,再截取以十六进制数表示的RGB颜色字符串用于为属性赋值。

返回颜色元组示例:((128.5, 255.99609375, 255.99609375), '#80ffff')

tkinter.colorchooser.askcolor()可选参数:

  • parent: 指定该对话框的属主窗口。
  • title:指定该对话框的标题。
  • color:str | bytes 指定该对话框初始选择的颜色。

举例:单击按钮,弹出颜色选择对话框,并将用户所选择的颜色设置为窗体上标签的背景颜色,如下:

# coding = utf-8
# File date: Hi_2021/12/30 16:27
# File_name: 13_colorchooser颜色选择对话框.py
from tkinter import *
import tkinter.colorchooser


def xz():
    color = tkinter.colorchooser.askcolor()
    colorstr = str(color)
    print('打印字符串%s 切掉后=%s' % (colorstr, colorstr[-9:-2]))
    lb.config(text=colorstr[-9:-2], background=colorstr[-9:-2])


root = Tk()
root.geometry("200x200")
lb = Label(root, text='请关注颜色的变化')
lb.pack()
btn = Button(root, text='弹出颜色选择对话框', command=xz)
btn.pack()
root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值