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

消息框:tkinter.messagebox

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-12 17:10:56 | 显示全部楼层 |阅读模式
文章目录一、tkinter简介二、tkinter基础(部件+布局管理器)三、项目实战3.1、主循环:root.mainloop()3.2、手动摧毁窗口:root.destroy()3.3、布局管理器:pack3.4、布局管理器:grid3.5、布局管理器:place四、消息框:tkinter.messagebox五、滚动文本:tkinter.scrolledtext一、tkinter简介Tkinter是Python标准库中的一个模块,用于创建图形用户界面(GUI)。它是最早的也是最常用的GUI工具包之一,因其易用性和直接与Python绑定而广受欢迎。基于Tcl/Tk(Tk是Tcl语言开发的跨平台GUI工具包)。Tkinter提供了与Tk的接口,使得Python程序员能够创建GUI应用程序。跨平台支持:支持在Windows、macOS和Linux上运行,且发行版一致。Tkinter是Python标准库的一部分,无需额外安装。二、tkinter基础(部件+布局管理器)根窗口(RootWindow):是所有Tkinter应用程序的主窗口,通常由Tk()类实例化。它是其他所有窗口部件的父窗口。部件(Widgets):是指应用程序中的各种界面元素,是用户与应用程序交互的主要方式。标签(Label):用于显示文本或图像的静态控件。标签常用于显示提示信息或。按钮(Button):用户可以点击按钮来触发某些动作。可以为按钮设置文本或图像,并指定点击时调用的回调函数。文本框(Entry):单行文本输入控件,用户可以在其中输入和编辑文本。文本控件(Text):多行文本输入控件,允许用户输入和编辑多行文本。它支持丰富的文本样式和颜色。列表框(Listbox):显示列表项的控件,用户可以从中选择一个或多个项目。复选框(Checkbutton):允许用户选择或取消选择的按钮。常用于表示布尔选项。单选按钮(Radiobutton):一组选项中只能选择一个的按钮。常用于从多个互斥的选项中选择一个。框架(Frame):用于组织其他部件的容器。框架可以嵌套,用于创建复杂的布局。画布(Canvas):强大的绘图区域,用于绘制图形、图像和其他复杂的自定义界面元素。布局管理器(GeometryManagers):负责组织和排列部件在窗口中的位置。Tkinter提供了几种布局管理器,每种管理器有不同的布局方式。顺序-布局管理器pack:按照添加顺序将部件放置在窗口中。可以通过side参数指定部件排列的方向(如top、bottom、left、right)。网格-布局管理器grid:使用行和列来精确定位部件。可以通过row和column参数指定部件的位置。坐标-布局管理器place:使用x和y坐标来精确定位部件主循环root.mainloop():(1)启动Tkinter的主事件循环,使应用程序保持运行并处理所有用户交互(如:鼠标点击、键盘输入等)和窗口更新。(2)没有它,窗口不会响应用户输入或显示任何内容。(3)当用户关闭窗口时,自动结束事件处理循环并关闭程序,而不需要显示调用root.destroy()。手动摧毁窗口root.destroy():用于完全销毁tkinter主窗口。它不仅关闭窗口并终止应用程序的运行,包括停止所有与窗口相关的事件处理循环,并清理相关的资源(如:内存或文件句柄)。三、项目实战3.1、主循环:root.mainloop()点击(右)确定,(右)界面摧毁,(左)界面不会摧毁。importtkinterastkfromtkinterimportmessageboxdefclose_application():messagebox.showinfo("Info","Closingtheapplication...")if__name__=='__main__':root=tk.Tk()#创建主窗口root.title("SimpleTkinterApp")#设置主窗口tk.Button(root,text="ClickMe",command=close_application).pack(pady=20)#添加一个按钮root.mainloop()#启动主循环12345678910113.2、手动摧毁窗口:root.destroy()点击(右)确定,(右)界面摧毁,(左)界面同时摧毁。importtkinterastkfromtkinterimportmessageboxdefclose_application():messagebox.showinfo("Info","Closingtheapplication...")root.destroy()#手动关闭窗口并退出程序if__name__=='__main__': root=tk.Tk()#创建主窗口 root.title("SimpleTkinterApp")#设置主窗口 tk.Button(root,text="Close",command=close_application).pack(pady=20)#添加一个关闭按钮 root.mainloop()#启动主循环1234567891011123.3、布局管理器:packimporttkinterastkfromtkinterimportmessageboxdefsubmit():name=name_entry.get()gender=gender_var.get()subscribed=subscribe_var.get()gender_text="Male"ifgender==1else"Female"subscribed_text="Yes"ifsubscribed==1else"No"messagebox.showinfo("Information",f"Name:{name}\nGender:{gender_text}\nSubscribed:{subscribed_text}")if__name__=='__main__': root=tk.Tk()#创建主窗口 root.title("SimpleFormwithpack()")#设置主窗口 #创建部件并使用pack布局管理器 tk.Label(root,text="Name:").pack(anchor='w',padx=10,pady=5) name_entry=tk.Entry(root) name_entry.pack(padx=10,pady=5) tk.Label(root,text="Gender:").pack(anchor='w',padx=10,pady=5) gender_var=tk.IntVar() tk.Radiobutton(root,text="Male",variable=gender_var,value=1).pack(anchor='w',padx=10,pady=2) tk.Radiobutton(root,text="Female",variable=gender_var,value=2).pack(anchor='w',padx=10,pady=2) subscribe_var=tk.IntVar() tk.Checkbutton(root,text="Subscribetonewsletter",variable=subscribe_var).pack(anchor='w',padx=10,pady=5) submit_button=tk.Button(root,text="Submit",command=submit) submit_button.pack(pady=10) root.mainloop()#进入主循环123456789101112131415161718192021222324252627282930313233343.4、布局管理器:gridimporttkinterastkfromtkinterimportmessageboxdefsubmit():name=name_entry.get()gender=gender_var.get()subscribed=subscribe_var.get()gender_text="Male"ifgender==1else"Female"subscribed_text="Yes"ifsubscribed==1else"No"messagebox.showinfo("Information",f"Name:{name}\nGender:{gender_text}\nSubscribed:{subscribed_text}")if__name__=='__main__':root=tk.Tk()#创建主窗口root.title("SimpleForm")#设置主窗口#创建部件并使用grid布局管理器tk.Label(root,text="Name:").grid(row=0,column=0,padx=10,pady=5,sticky=tk.W)name_entry=tk.Entry(root)name_entry.grid(row=0,column=1,padx=10,pady=5)tk.Label(root,text="Gender:").grid(row=1,column=0,padx=10,pady=5,sticky=tk.W)gender_var=tk.IntVar()tk.Radiobutton(root,text="Male",variable=gender_var,value=1).grid(row=1,column=1,padx=10,pady=5,sticky=tk.W)tk.Radiobutton(root,text="Female",variable=gender_var,value=2).grid(row=1,column=2,padx=10,pady=5,sticky=tk.W)subscribe_var=tk.IntVar()tk.Checkbutton(root,text="Subscribetonewsletter",variable=subscribe_var).grid(row=2,columnspan=3,padx=10,pady=5)submit_button=tk.Button(root,text="Submit",command=submit)submit_button.grid(row=3,columnspan=3,pady=10)root.mainloop()#进入主循环12345678910111213141516171819202122232425262728293031323334353.5、布局管理器:placeimporttkinterastkfromtkinterimportmessageboxdefsubmit():name=name_entry.get()gender=gender_var.get()subscribed=subscribe_var.get()gender_text="Male"ifgender==1else"Female"subscribed_text="Yes"ifsubscribed==1else"No"messagebox.showinfo("Information",f"Name:{name}\nGender:{gender_text}\nSubscribed:{subscribed_text}")if__name__=='__main__':root=tk.Tk()#创建主窗口root.title("SimpleFormwithplace()")#设置主窗口#创建部件并使用place布局管理器tk.Label(root,text="Name:").place(x=20,y=20,anchor=tk.W)name_entry=tk.Entry(root)name_entry.place(x=80,y=20,width=200)tk.Label(root,text="Gender:").place(x=20,y=60,anchor=tk.W)gender_var=tk.IntVar()tk.Radiobutton(root,text="Male",variable=gender_var,value=1).place(x=80,y=60,anchor=tk.W)tk.Radiobutton(root,text="Female",variable=gender_var,value=2).place(x=140,y=60,anchor=tk.W)subscribe_var=tk.IntVar()tk.Checkbutton(root,text="Subscribetonewsletter",variable=subscribe_var).place(x=20,y=100,anchor=tk.W)submit_button=tk.Button(root,text="Submit",command=submit)submit_button.place(x=20,y=140)root.geometry("300x200")#设置窗口大小root.mainloop()#进入主循环1234567891011121314151617181920212223242526272829303132333435四、消息框:tkinter.messagebox官网:tkinter.messagebox—Tkinter消息提示源码:Lib/tkinter/messagebox.pytkinter.messagebox模块:提供了多种弹出消息框的函数,用于在GUI应用程序中显示信息、警告、错误、提示用户进行确认等。消息框是模态的,将根据用户的选择返回(True、False、OK、None、Yes、No)的子集。importtkinterastkfromtkinterimportmessageboxdefshow_message_boxes():root=tk.Tk()#创建主窗口root.withdraw()#隐藏主窗口root.lift()#提升窗口在最前面root.attributes('-topmost',True)#将窗口保持在最前面#root.after(0,lambda:root.attributes('-topmost',False))#保证消息框显示后可以被其他窗口覆盖messagebox.showinfo("信息","这是一个信息消息框。")messagebox.showwarning("警告","这是一个警告消息框。")messagebox.showerror("错误","这是一个错误消息框。")result=messagebox.askquestion("问题","这是一个问题消息框。")print(f"问题消息框:{result}")result=messagebox.askretrycancel("重试或取消","这是一个重试/取消消息框。")print(f"重试/取消消息框:{result}")result=messagebox.askokcancel("确认","这是一个确认消息框。")print(f"确认消息框:{result}")result=messagebox.askyesno("问题","这是一个是/否消息框。")print(f"是否消息框:{result}")result=messagebox.askyesnocancel("问题","这是一个是/否/取消消息框。")print(f"是/否/取消消息框:{result}")root.destroy()#用于销毁主窗口,从而退出程序。if__name__=='__main__':show_message_boxes()1234567891011121314151617181920212223242526272829303132333435五、滚动文本:tkinter.scrolledtext官网:tkinter.scrolledtext—滚动文本小部件源码:Lib/tkinter/scrolledtext.pytkinter.scrolledtext.ScrolledText:是tkinter库中的一个文本小部件,它带有一个内置的滚动条,使得可以方便地处理大量文本。这个组件可以用来创建带有垂直滚动条的文本输入或显示区域。importtkinterastkfromtkinterimportscrolledtextdefmain():root=tk.Tk()#创建主窗口root.title("ScrolledText示例")#设置窗口root.geometry("400x300")#设置窗口大小#创建ScrolledText小部件st=scrolledtext.ScrolledText(root,wrap=tk.WORD,width=40,height=10,font=("TimesNewRoman",12))st.pack(padx=10,pady=10)#将小部件放置在主窗口中,并设置外边距#在ScrolledText中插入初始文本st.insert(tk.INSERT,"这是一个带滚动条的文本输入框。你可以在这里输入大量的文本内容,而不会超出显示区域。\n\n"\"如果文本超出显示区域,会自动出现滚动条。")#启动主事件循环root.mainloop()if__name__=="__main__":main()12345678910111213141516171819202122
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 01:42 , Processed in 1.922043 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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