2026/6/11 10:30:30
网站建设
项目流程
值得浏览的外国网站,开发公司总工总结,wordpress cdc,wordpress user role editor#x1f525;作者简介#xff1a; 一个平凡而乐于分享的小比特#xff0c;中南民族大学通信工程专业研究生#xff0c;研究方向无线联邦学习 #x1f3ac;擅长领域#xff1a;驱动开发#xff0c;嵌入式软件开发#xff0c;BSP开发 ❄️作者主页#xff1a;一个平凡而…作者简介 一个平凡而乐于分享的小比特中南民族大学通信工程专业研究生研究方向无线联邦学习擅长领域驱动开发嵌入式软件开发BSP开发❄️作者主页一个平凡而乐于分享的小比特的个人主页✨收录专栏Python本专栏为记录项目中用到常用python库欢迎大家点赞 收藏 ⭐ 加关注哦Tkinter GUI 编程教程Tkinter 是 Python 的标准 GUI 库可以快速创建图形用户界面。本教程将带你从基础开始学习 Tkinter。1. Tkinter 简介Tkinter 是 Python 自带的 GUI 工具包基于 Tk GUI 工具集。它的优点包括跨平台Windows、macOS、Linux简单易学无需额外安装2. 第一个 Tkinter 程序importtkinterastk# 创建主窗口roottk.Tk()root.title(我的第一个 Tkinter 程序)root.geometry(300x200)# 设置窗口大小# 创建标签labeltk.Label(root,textHello, Tkinter!)label.pack()# 将标签添加到窗口# 创建按钮defon_click():label.config(text按钮被点击了)buttontk.Button(root,text点击我,commandon_click)button.pack()# 启动主循环root.mainloop()3. 窗口和基础组件3.1 创建窗口importtkinterastk roottk.Tk()root.title(窗口标题)root.geometry(400x300)# 宽度x高度root.resizable(True,False)# 宽度可调整高度不可调整root.iconbitmap(icon.ico)# 设置窗口图标仅Windowsroot.configure(bglightblue)# 设置背景颜色3.2 常用组件importtkinterastkfromtkinterimportmessagebox roottk.Tk()root.title(基础组件演示)root.geometry(400x400)# 1. 标签labeltk.Label(root,text这是一个标签,font(Arial,12),fgblue)label.pack(pady10)# 2. 按钮defbutton_click():messagebox.showinfo(提示,按钮被点击了)buttontk.Button(root,text点击我,commandbutton_click,bglightgreen)button.pack(pady10)# 3. 输入框entrytk.Entry(root,width30)entry.insert(0,默认文本)# 设置默认文本entry.pack(pady10)# 4. 文本框texttk.Text(root,height5,width30)text.insert(1.0,这是一个多行文本框\n可以输入多行文本)text.pack(pady10)# 5. 复选框check_vartk.IntVar()checkbuttontk.Checkbutton(root,text选择我,variablecheck_var)checkbutton.pack(pady10)# 6. 单选框radio_vartk.StringVar(value选项1)radio1tk.Radiobutton(root,text选项1,variableradio_var,value选项1)radio2tk.Radiobutton(root,text选项2,variableradio_var,value选项2)radio1.pack()radio2.pack()root.mainloop()4. 布局管理Tkinter 有三种布局管理器pack、grid 和 place。4.1 pack 布局importtkinterastk roottk.Tk()root.title(pack 布局)root.geometry(300x200)# pack 按照添加顺序排列组件tk.Label(root,text标签1,bgred).pack(filltk.X,padx10,pady5)tk.Label(root,text标签2,bggreen).pack(filltk.X,padx10,pady5)tk.Label(root,text标签3,bgblue).pack(filltk.X,padx10,pady5)# side 参数控制方向tk.Button(root,text左).pack(sidetk.LEFT,padx5)tk.Button(root,text右).pack(sidetk.RIGHT,padx5)tk.Button(root,text顶部).pack(sidetk.TOP,pady5)tk.Button(root,text底部).pack(sidetk.BOTTOM,pady5)root.mainloop()4.2 grid 布局最常用importtkinterastk roottk.Tk()root.title(grid 布局)root.geometry(300x200)# 使用 grid 布局类似表格tk.Label(root,text用户名:).grid(row0,column0,padx10,pady10,stickytk.W)tk.Entry(root).grid(row0,column1,padx10,pady10)tk.Label(root,text密码:).grid(row1,column0,padx10,pady10,stickytk.W)tk.Entry(root,show*).grid(row1,column1,padx10,pady10)# 跨列显示按钮tk.Button(root,text登录).grid(row2,column0,columnspan2,pady20,stickytk.EW)# 配置列权重使第二列可以伸缩root.grid_columnconfigure(1,weight1)root.mainloop()4.3 place 布局精确位置importtkinterastk roottk.Tk()root.title(place 布局)root.geometry(300x200)# 使用绝对坐标放置组件tk.Label(root,text绝对定位,bgyellow).place(x50,y50)# 使用相对位置tk.Label(root,text相对定位,bglightblue).place(relx0.5,rely0.5,anchortk.CENTER)root.mainloop()5. 事件处理importtkinterastkfromtkinterimportmessagebox roottk.Tk()root.title(事件处理)root.geometry(400x300)# 1. 按钮点击事件defbutton_click():messagebox.showinfo(事件,按钮被点击)buttontk.Button(root,text点击事件,commandbutton_click)button.pack(pady10)# 2. 键盘事件defon_key_press(event):print(f按下了键:{event.char})label.config(textf按下了:{event.char})labeltk.Label(root,text按任意键)label.pack(pady10)root.bind(Key,on_key_press)# 3. 鼠标事件defon_click(event):print(f鼠标点击位置: ({event.x},{event.y}))canvastk.Canvas(root,width200,height100,bglightgray)canvas.pack(pady10)canvas.bind(Button-1,on_click)# 左键点击# 4. 输入框事件defon_entry_change(event):print(f输入框内容:{entry.get()})entrytk.Entry(root,width30)entry.pack(pady10)entry.bind(KeyRelease,on_entry_change)# 键盘释放时触发root.mainloop()6. 高级组件importtkinterastkfromtkinterimportttk,messagebox,filedialog roottk.Tk()root.title(高级组件)root.geometry(500x400)# 1. 下拉菜单defon_menu_select(event):messagebox.showinfo(选择,f选择了:{combo.get()})combottk.Combobox(root,values[选项1,选项2,选项3])combo.set(请选择)combo.pack(pady10)combo.bind(ComboboxSelected,on_menu_select)# 2. 列表框listboxtk.Listbox(root,height4)foritemin[项目1,项目2,项目3,项目4,项目5]:listbox.insert(tk.END,item)listbox.pack(pady10)defshow_selected():selectedlistbox.curselection()ifselected:messagebox.showinfo(选择,f选择了:{listbox.get(selected[0])})tk.Button(root,text显示选中项,commandshow_selected).pack(pady5)# 3. 滚动条frametk.Frame(root)frame.pack(pady10)texttk.Text(frame,height5,width40)scrollbartk.Scrollbar(frame,commandtext.yview)text.configure(yscrollcommandscrollbar.set)text.pack(sidetk.LEFT)scrollbar.pack(sidetk.RIGHT,filltk.Y)# 4. 进度条progressttk.Progressbar(root,length200,modeindeterminate)progress.pack(pady10)defstart_progress():progress.start(10)defstop_progress():progress.stop()tk.Button(root,text开始进度,commandstart_progress).pack(pady5)tk.Button(root,text停止进度,commandstop_progress).pack(pady5)# 5. 文件对话框defopen_file():filepathfiledialog.askopenfilename(title选择文件,filetypes[(文本文件,*.txt),(所有文件,*.*)])iffilepath:messagebox.showinfo(文件,f选择了:{filepath})tk.Button(root,text打开文件,commandopen_file).pack(pady10)root.mainloop()7. 综合示例创建一个简单的待办事项应用importtkinterastkfromtkinterimportttk,messageboxfromdatetimeimportdatetimeclassTodoApp:def__init__(self,root):self.rootroot self.root.title(待办事项管理)self.root.geometry(500x400)self.tasks[]self.setup_ui()defsetup_ui(self):# 创建框架input_frametk.Frame(self.root)input_frame.pack(pady10,padx10,filltk.X)# 输入框和添加按钮tk.Label(input_frame,text新任务:).pack(sidetk.LEFT,padx(0,10))self.task_entrytk.Entry(input_frame,width30)self.task_entry.pack(sidetk.LEFT,padx(0,10))self.task_entry.bind(Return,lambdae:self.add_task())tk.Button(input_frame,text添加,commandself.add_task,bglightgreen).pack(sidetk.LEFT)# 任务列表list_frametk.Frame(self.root)list_frame.pack(pady10,padx10,filltk.BOTH,expandTrue)# 创建树形视图显示任务columns(序号,任务,创建时间,状态)self.treettk.Treeview(list_frame,columnscolumns,showheadings,height10)forcolincolumns:self.tree.heading(col,textcol)self.tree.column(col,width100)self.tree.column(任务,width200)# 添加滚动条scrollbarttk.Scrollbar(list_frame,orienttk.VERTICAL,commandself.tree.yview)self.tree.configure(yscrollcommandscrollbar.set)self.tree.pack(sidetk.LEFT,filltk.BOTH,expandTrue)scrollbar.pack(sidetk.RIGHT,filltk.Y)# 操作按钮button_frametk.Frame(self.root)button_frame.pack(pady10)tk.Button(button_frame,text标记完成,commandself.complete_task,bglightblue).pack(sidetk.LEFT,padx5)tk.Button(button_frame,text删除任务,commandself.delete_task,bglightcoral).pack(sidetk.LEFT,padx5)tk.Button(button_frame,text清空全部,commandself.clear_all,bgorange).pack(sidetk.LEFT,padx5)# 状态标签self.status_labeltk.Label(self.root,text总任务数: 0,relieftk.SUNKEN,anchortk.W)self.status_label.pack(sidetk.BOTTOM,filltk.X)defadd_task(self):task_textself.task_entry.get().strip()iftask_text:task_idlen(self.tasks)1create_timedatetime.now().strftime(%H:%M:%S)self.tasks.append({id:task_id,text:task_text,time:create_time,status:待完成})self.tree.insert(,tk.END,values(task_id,task_text,create_time,待完成))self.task_entry.delete(0,tk.END)self.update_status()else:messagebox.showwarning(警告,请输入任务内容)defcomplete_task(self):selectedself.tree.selection()ifselected:itemself.tree.item(selected[0])task_iditem[values][0]fortaskinself.tasks:iftask[id]task_id:task[status]已完成breakself.tree.item(selected[0],values(item[values][0],item[values][1],item[values][2],已完成))self.update_status()else:messagebox.showwarning(警告,请选择要完成的任务)defdelete_task(self):selectedself.tree.selection()ifselected:ifmessagebox.askyesno(确认,确定要删除选中的任务吗):itemself.tree.item(selected[0])task_iditem[values][0]self.tasks[taskfortaskinself.tasksiftask[id]!task_id]self.tree.delete(selected[0])self.update_status()else:messagebox.showwarning(警告,请选择要删除的任务)defclear_all(self):ifself.tasksandmessagebox.askyesno(确认,确定要清空所有任务吗):self.tasks.clear()foriteminself.tree.get_children():self.tree.delete(item)self.update_status()defupdate_status(self):totallen(self.tasks)completedsum(1fortaskinself.tasksiftask[status]已完成)self.status_label.config(textf总任务数:{total}| 已完成:{completed}| 待完成:{total-completed})defmain():roottk.Tk()appTodoApp(root)root.mainloop()if__name____main__:main()总结这个教程涵盖了 Tkinter 的基础知识和常用功能基础组件Label、Button、Entry、Text 等布局管理pack、grid、place 三种布局方式事件处理鼠标、键盘和各种组件事件高级组件Combobox、Listbox、Progressbar 等综合应用创建完整的 GUI 应用程序通过这个教程你应该能够开始使用 Tkinter 创建自己的图形界面应用程序。继续练习的最好方式是尝试修改示例代码添加新功能或者创建自己的小项目。