找回密码
 会员注册
查看: 36|回复: 0

pythonGUI开发tkinter选项卡,移动滑块,颜色选择框,文本对话框,对话输入框,通用消息框模块用法详解

[复制链接]

6

主题

0

回帖

19

积分

新手上路

积分
19
发表于 2024-9-4 21:14:03 | 显示全部楼层 |阅读模式
✨✨欢迎大家来到景天科技苑✨✨🎈🎈养成好习惯,先赞后看哦~🎈🎈🏆作者简介:景天科技苑🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。所属的专栏:python图形化GUI编程tkinter精讲景天的主页:景天科技苑文章目录tkinter其他组件1.OptionMenu选择项【示例】OptionMenu(选择项)的基本用法2.Scale移动滑块【示例】使用Scale(移动滑块)控制字体大小变化3.颜色选择框【示例】颜色选择框基本用法4.文件对话框【示例】文件对话框基本用法【示例】打开指定txt文件,并读出文件内容到窗口5.简单输入对话框【示例】简单对话框基本用法6.通用消息框【示例】通用消息框案例展示tkinter其他组件我们在前面介绍了最常用的几个组件,接下来我们介绍其他一些组件。1.OptionMenu选择项OptionMenu(选择项)用来做多选一,选中的项在顶部显示。OptionMenu(选择菜单)事实上是下拉菜单的改版,它的发明弥补了Listbox组件无法实现下拉列表框的遗憾。【示例】OptionMenu(选择项)的基本用法"""optionmenu的使用测试"""fromtkinterimport*root=Tk()root.geometry("250x120+200+300")root.title('选项卡测试')#设置个变量v=StringVar()#默认选中百战程序员v.set("百战程序员")#创建选项卡,后面选项都通过普通实参传参即可,不可用关键字传参om=OptionMenu(root,v,"景天科技苑","百战程序员","卓越班[保底20万]","天涯课堂")om["width"]=12om.pack()deftest1():#选中哪个,就把哪个打印出来print("最喜爱的机构:",v.get())#v.set("景天科技苑")#直接修改了optionmenu中选中的值#按钮绑定事件,点击确定,打印出最喜欢的机构Button(root,text="确定",command=test1).pack()root.mainloop()1234567891011121314151617181920212223242526272829运行,默认选的是百战程序员我们可以选择其他项点确定,打印出来2.Scale移动滑块Scale(移动滑块)用于在指定的数值区间,通过滑块的移动来选择值。Tkinter组件:ScaleScale(刻度)组件看起来像是一个带数据的Scrollbar(滚动条)组件,但事实上它们是不同的两个东东。Scale组件允许用于通过滑动滑块来选择一个范围内的数字。你可以控制该组件的最大值、最小值,以及分辨率。何时使用Scale组件?当你希望用户输入某个范围内的一个数值,使用Scale组件可以很好的代替Entry组件。用法创建一个指定范围的Scale组件其实非常容易,你只需要指定它的from和to两个选项即可。但由于from本身是Python的关键字,所以为了区分需要在后边紧跟一个下划线:from_参数Scale(master=None,**options)(class)master–父组件**options–组件选项,下方表格详细列举了各个选项的具体含义和用法:方法4.1coords(value=None)–获得当前滑块的位置对应Scale组件左上角的相对坐标–如果设置value参数,则返回当滑块所在该位置时的相对坐标4.2get()–获得当前滑块的位置–Tkinter会尽可能地返回一个整型值,否则返回一个浮点型值4.3identify(x,y)–返回一个字符串表示指定位置下(如果有的话)的Scale部件–返回值可以是:“slider”(滑块),“trough1”(左侧或上侧的凹槽),“trough2”(右侧或下侧的凹槽)或“”(啥都没有)4.4set(value)返回一个字符串表示指定位置下(如果有的话)的Scale部件–返回值可以是:“slider”(滑块),“trough1”(左侧或上侧的凹槽),“trough2”(右侧或下侧的凹槽)或“”(啥都没有)【示例】使用Scale(移动滑块)控制字体大小变化"""scale滑块的使用测试"""fromtkinterimport*root=Tk();root.geometry("400x150")deftest1(value):print("滑块的值:",value)#字体大小随着滑块值的大小而改变newFont=("楷体",value)a.config(font=newFont)#command调用的函数的参数,就是当前滑块的值s1=Scale(root,from_=10,to=50,length=200,tickinterval=5,orient=HORIZONTAL,command=test1)s1.pack()a=Label(root,text="景天科技苑",width=10,height=1,bg="green",fg="red")a.pack()#第二种方式滑块的值defshow():print("第二种方式获取滑块的值:",s1.get())Button(root,text="获取滑块的值",command=show).pack()root.mainloop()12345678910111213141516171819202122232425262728运行当我们滑动滑块,下面标签字体的大小随之改变点击按钮,也可以获取当前滑块位置的值3.颜色选择框颜色选择框可以帮助我们设置背景色、前景色、画笔颜色、字体颜色等等。Tkinter提供了一个简单易用的颜色选择器模块colorchooser,通过调用colorchooser.askcolor()方法,我们可以轻松实现颜色选择功能。效果如下【示例】颜色选择框基本用法"""askcolor颜色选择框的测试,改变背景色"""fromtkinterimport*fromtkinter.colorchooserimport*root=Tk();root.geometry("400x150")deftest1():#askcolor方法,调出颜色选择框。color="red",设置默认颜色为红色s1=askcolor(color="red",title="选择背景色")#打印当前选取的颜色,以元祖方式呈现,第一个元素是颜色的RGB值,第二个是颜色的十六进制值print(s1)#s1的值是:((0.0,0.0,255.99609375),'#0000ff')#将窗口的颜色设置为选取的颜色,十六进制的颜色值root.config(bg=s1[1])Button(root,text="选择背景色",command=test1).pack()root.mainloop()123456789101112131415161718192021运行当我们点击按钮,会弹出颜色选择框当我们选一个颜色点击确定,root窗口的颜色就设置为我们选的颜色4.文件对话框文件对话框帮助我们实现可视化的操作目录、操作文件。最后,将文件、目录的信息传入到程序中。文件对话框包含如下一些常用函数:命名参数options的常见值如下:filetypes详解:指定筛选文件类型的下拉菜单选项,该选项的值是由二元组构成的列表,每个二元组是由(类型名,后缀)构成,例如:filetypes=[(‘文本’,‘.txt’),(‘栅格’,‘.tif’),(‘动图’,‘.gif’)]。(看情况,当文件夹中文件很多且类型很多,建议给出该参数)multiple:是否确定选择多个文件,iftrueusermayselectmorethanonefile。例如:选择一个文件:filedialog.askopenfilename(title=‘请选择一个文件’,initialdir=r’D:\数据\测试数据’,filetypes=[(“文本文档”,“.txt”),(‘Excel’,‘.xls.xlsx’),(‘AllFiles’,’*‘)],defaultextension=’.tif’,multiple=True)选择多个文件:filedialog.askopenfilename(title=‘请选择多个文件’,initialdir=r’D:\数据\测试数据’,filetypes=[(“文本文档”,“.txt”),(‘Excel’,‘.xls.xlsx’),(‘AllFiles’,’*')])选择文件存储路径:filedialog.asksaveasfile(title=‘请选择文件存储路径’,initialdir=r’D:\数据\测试数据’,filetypes=[(“文本文档”,“.txt”),(‘Excel’,‘.xls.xlsx’),(‘AllFiles’,’*‘)],defaultextension=’.tif’)【示例】文件对话框基本用法"""文件对话框获取文件"""fromtkinterimport*fromtkinter.filedialogimport*root=Tk();root.geometry("400x100")deftest1():#filetypes指定上传文件的类型,('AllFiles','*')匹配任何文件后缀f=askopenfilename(title="上传文件",initialdir="e:",filetypes=[("视频文件",".mp4"),("图片",".png"),('AllFiles','*')])#返回的是个字符串路径print("返回的对象",f,type(f))show["text"]=fButton(root,text="选择编辑的视频或图片文件",command=test1).pack()show=Label(root,width=40,height=3,bg="green")show.pack()root.mainloop()12345678910111213141516171819202122运行点击按钮,选择文件看到默认选择E盘,文件后缀可以选mp4,png以及所有类型选择一个png图片,点击确定,看到将文件路径打印出来【示例】打开指定txt文件,并读出文件内容到窗口#askopenfile读取文件,显示到窗口标签fromtkinterimport*fromtkinter.filedialogimport*root=Tk();root.geometry("400x100")deftest1():withaskopenfile(title="上传文件",initialdir="d:",filetypes=[("文本文件",".txt")])asf:iff:show["text"]=f.read()else:print("未上传文件")Button(root,text="选择读取的文本文件",command=test1).pack()show=Label(root,width=40,height=3,bg="green")show.pack()root.mainloop()12345678910111213141516171819202122运行点击按钮Label上显示从文件中读取的内容5.简单输入对话框simpledialog(简单对话框)包含如下常用函数:参数中,title表示窗口;prompt是提示信息;命名参数kw为各种选项:initialvalue(初始值)、minvalue(最小值)、maxvalue(最大值)。【示例】简单对话框基本用法"""简单对话框"""fromtkinterimport*fromtkinter.simpledialogimport*root=Tk();root.geometry("400x100")deftest1():a=askinteger(title="输入年龄",prompt="请输入年龄",initialvalue=18,minvalue=1,maxvalue=150)#askstring、askfloat框使用方式一样show["text"]=aButton(root,text="景天你多大了?请输入",command=test1).pack()show=Label(root,width=40,height=3,bg="green")show.pack()root.mainloop()12345678910111213141516171819运行点击按钮,默认值是18如果输入的值超过范围,会弹窗提示输入正常的值,就会显示到标签上6.通用消息框messagebox(通用消息框)用于和用户简单的交互,用户点击确定、取消。如下列出了messagebox的常见函数:【示例】通用消息框案例展示"""通用消息话框"""fromtkinterimport*fromtkinter.messageboximport*root=Tk();root.geometry("400x100")deftest1():a=askokcancel(title="景天科技苑",message="喜欢景天科技苑吗?")print("输入的值是:",a)#askstring、askfloat框使用方式一样show["text"]=aButton(root,text="是否喜欢景天?请点击",command=test1).pack()show=Label(root,width=50,height=50,bg="green")show.pack()root.mainloop()1234567891011121314151617181920点击确定
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 00:58 , Processed in 0.549540 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表