当前位置: 首页 > 后端技术 > Python

Python内置界面开发框架Tkinter入门入门ding

时间:2023-03-26 11:16:13 Python

如需转载请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/X5。..这篇文章大概2562篇,阅读需要15分钟,内容不多,但也费了点功夫。如果想交流,欢迎关注我,在评论区留言。感谢大家的点赞、收藏和分享本文属于系列文章《Python 内置界面开发框架 Tkinter入门篇?丙》的第四篇,也是最后一篇,后续将从《Python 内置界面开发框架 Tkinter入门篇?丙》开始。欢迎关注我的微信公众号「ENG八戒」查看本系列的相关文章,也可以翻到文章底部查看整个系列的文章合集。实现一个简单的记事本应用前面已经说了那么多了,用一个流行语可以概括为“大知识点”。为了系列的全面体验,让我们一起来实现一个简单的记事本程序吧!如果把产品定义看成是产品开发,我们需要确切地知道我们想要的产品长什么样子,然后才是实现的过程。我们打算做一个基本的记事本,可以点击按钮打开TXT格式的文本文件,读取文件内容显示在编辑区,然后点击其他按钮在编辑区编辑文件内容。内容保存为另一个文本文件。根据上面功能需求的定义,可以为记事本设置草图。可以看出,首先需要一个主窗口importtkinterastkwindow=tk.Tk()window.mainloop()然后,应该有一个标题栏显示软件名称“记事本”importtkinterastkwindow=tk.Tk()window.title("Notepad")window.mainloop()从sketch来看,还需要功能按钮区和文本编辑区,可以使用grid布局管理器来划分区域。整体可分为1行2列,第一列为功能按钮区,第二列为文本编辑区;第一行第一列也是功能按钮区,分为两行一列,第一行是打开按钮,第二行是另存为按钮。嗯,这是我们对这个产品的初步定义。UI实现划分界面布局后,开始添加控制代码importtkinterastkwindow=tk.Tk()window.title("Notepad")btn_frame=tk.Frame(master=window,bd=2)btn_open=tk.Button(master=btn_frame,text="open")btn_save_as=tk.Button(master=btn_frame,text="saveas")btn_open.grid(row=0,column=0)btn_save_as.grid(row=1,column=0)btn_frame.grid(row=0,column=0)txt_edit=tk.Text(master=window)txt_edit.grid(row=0,column=1)window.mainloop()显示它看起来已经这样了和草图很接近了,但是按钮的布局还需要调整一下,位置要在所属栏目顶部,按钮太靠边了。此外,在窗体被拉伸后,控件不会跟随变化。如何解决这些问题?为了将按钮粘在顶部,将顶部和底部应用于控件btn_frame,并将粘性设置为“ns”。但是按钮距离太远,可以修改padding属性padding,比如padx=5,pady=5将控件的边框缩小5个像素,保持距离感。编辑框控件不会随着窗体一起拉伸,因为控件txt_edit还需要设置所有的边框都靠近边框,比如设置sticky为“nsew”。看一下修改后的代码importtkinterastkwindow=tk.Tk()window.title("Notepad")window.rowconfigure(0,minsize=100,weight=1)window.columnconfigure(1,minsize=100,weight=1)btn_frame=tk.Frame(master=window,bd=2)btn_open=tk.Button(master=btn_frame,text="open")btn_save_as=tk.Button(master=btn_frame,text="saveas")btn_open.grid(row=0,column=0,sticky="ew",padx=5,pady=5)btn_save_as.grid(row=1,column=0,sticky="ew",padx=5)btn_frame。grid(row=0,column=0,sticky="ns")txt_edit=tk.Text(master=window)txt_edit.grid(row=0,column=1,sticky="nsew")window.mainloop()运行试试吧!UI界面的视觉效果达到了预期。逻辑函数下一步是补充逻辑函数,让记事本可以读写文本文件。我们先看看如何实现打开逻辑。想一想:点击“打开”按钮,程序会弹出一个选择文件的窗口。选择文件后,点击确定,返回到选择的文件路径,然后根据文件路径读取文件内容,显示在编辑框中。另外,为了让用户知道最终显示的内容来自哪个文件,可以在窗口的标题栏前面加上文件路径。看看如何修改代码...defopen_file():file_path=filedialog.askopenfilename(filetypes=[("Textfiles","*.txt"),("Allfiles","*.*")])如果不是file_path:window.title("Untitled-Notepad")returnwindow.title(f"{file_path}-Notepad")txt_edit.delete("1.0",tk.END)withopen(file_path,mode="r",encoding="utf-8")asinput_file:txt_edit.insert(tk.END,input_file.read())...btn_open=tk.Button(master=btn_frame,text="open",command=open_file)。..以上代码的修改是增加一个响应函数open_file,用于打开文本文件并读取文件内容进行显示,然后在实例化按钮控件btn_open时将响应函数open_file赋值给参数command。为了测试记事本显示文本内容的功能,我们先在桌面上手动创建一个文本文件test.txt,然后输入内容并保存。这是一个测试文本文件...运行程序,然后点击“打开”按钮,选择新建的文件test.txt,打开可以看到读取文本内容的目标功能基本实现了,然后看看如何实现保存逻辑。想一想:点击“保存”按钮,程序会弹出窗口选择文件保存路径。选择好路径后点击确定返回到选择的路径,然后将编辑框中的内容按照路径保存为文件。保存后,窗口标题栏也需要做相应的更改。看看如何修改代码...defsave_as_file():file_path=filedialog.asksaveasfilename(defaultextension=".txt",filetypes=[("Textfiles","*.txt"),("Allfiles","*.*")])如果不是file_path:返回open(file_path,mode="w",encoding="utf-8")asoutput_file:output_file.write(txt_edit.get("1.0",tk.END))window.title(f"{file_path}-Notepad")...btn_save_as=tk.Button(master=btn_frame,text="Saveas",command=save_as_file)...上面代码的修改是添加响应函数save_as_file,该函数用于选择保存文件的位置并将编辑框的内容写入指定位置的文件,然后在实例化按钮控件时将响应函数save_as_file赋值给参数commandbtn_save_as.为了测试记事本的文件保存功能,我们先用我们新修改的记事本程序打开上面手动创建的文本文件test.txt,然后在编辑框中修改内容,点击弹出的“保存”按钮“另存为”文件窗口,找到保存位置并输入新文件名test_save_as.txt,最后点击“保存”。保存后,窗口标题的内容成为新的文件路径。好了,一个简单的记事本程序就这样完成了。希望以上内容能打开你的思路!python输出的打包部署独立可执行应用程序的引入与使用的GUI框架无关。可以直接参考我另一篇文章《Python:界面开发,wx入门篇》中的相关介绍。由于篇幅有限,系列文章《Python 内置界面开发框架 Tkinter入门篇》分为以下几个部分。感兴趣的朋友可以点击跳转查看《Python 内置界面开发框架 Tkinter入门篇 甲》《Python 内置界面开发框架 Tkinter入门篇 乙》《Python 内置界面开发框架 Tkinter入门篇 丙》《Python 内置界面开发框架 Tkinter入门篇 丁》。如果需要完整的示例代码,可以去github仓库获取:git@github.com:ifi-leung/python_gui_tkinter.git预览一下,本公众号ENG八戒的图书推荐活动来了很快。为了鼓励大家多读书,会有免费书籍的地方!