Python 使用tkinter复刻Windows记事本UI和菜单功能(二)

编程入门 行业动态 更新时间:2024-10-27 02:17:37

Python 使用tkinter复刻Windows记事本UI和<a href=https://www.elefans.com/category/jswz/34/1769013.html style=菜单功能(二)"/>

Python 使用tkinter复刻Windows记事本UI和菜单功能(二)

上一篇:Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)-CSDN博客

下一篇:敬请耐心等待,如发现BUG以及建议,请在评论区发表,谢谢!

相对上一篇文章,本篇文章的文本编辑器UI与Windows的记事本不能说是一毛一样,但绝对是失散多年的双胞胎集美。不仅长着一样的外表,内心还像周公辣么大,装着十个海王,根本吃不完。总而言之,言而总之,泰库辣!!!

运行结果

设计代码

"""文本编辑器
"""# 通配符
__all__ = ['main']# 鼠标右键菜单
def rightKeyEvent(event, object):object.post(event.x_root, event.y_root)# 主函数
def main():import tkinter as tkfrom tkinter import fontbase = tk.Tk()              # 新建一个窗口base.title('文本编辑器')     # 窗口标题base.geometry(f'750x550+{base.winfo_screenwidth()//4}+{base.winfo_screenheight()//8}')# 菜单栏menubar = tk.Menu(base)base.config(menu=menubar)# 二级菜单 文件fileMenu = tk.Menu(menubar, tearoff=0)fileMenu.add_command(label=f'新建(N){" "*28}Ctrl+N')fileMenu.add_command(label=f'新窗口(W){" "*16}Ctrl+Shift+N')fileMenu.add_command(label=f'打开(O)...{" "*26}Ctrl+O')fileMenu.add_command(label=f'保存(S){" "*29}Ctrl+S')fileMenu.add_command(label=f'另存为(A)...{" "*15}Ctrl+Shift+S')fileMenu.add_command(label=f'页面设置(U)...')fileMenu.add_command(label=f'打印(P)...{" "*27}Ctrl+P')fileMenu.add_command(label=f'退出(X)')menubar.add_cascade(label='文件(F)', menu=fileMenu)# 二级菜单 编辑editMenu = tk.Menu(menubar, tearoff=0)editMenu.add_command(label=f'撤销(U){" "*26}Ctrl+Z')editMenu.add_command(label=f'剪切(T){" "*26}Ctrl+X')editMenu.add_command(label=f'复制(C){" "*26}Ctrl+C')editMenu.add_command(label=f'粘贴(V){" "*26}Ctrl+V')editMenu.add_command(label=f'删除(L){" "*27}Delete')editMenu.add_command(label=f'使用 Bing 搜索...{" "*14}Ctrl+E')editMenu.add_command(label=f'查找(F)...{" "*25}Ctrl+F')editMenu.add_command(label=f'查找上一个(N){" "*23}F3')editMenu.add_command(label=f'查找下一个(V){" "*15}Shift+F3')editMenu.add_command(label=f'替换(R)...{" "*23}Ctrl+H')editMenu.add_command(label=f'转到(G)...{" "*23}Ctrl+G')editMenu.add_command(label=f'全选(A){" "*26}Ctrl+A')editMenu.add_command(label=f'时间/日期(D){" "*25}F5')menubar.add_cascade(label='编辑(E)', menu=editMenu)# 二级菜单 格式integer1 = tk.IntVar()formatMenu = tk.Menu(menubar, tearoff=0)formatMenu.add_checkbutton(label='自动换行(W)', variable=integer1, onvalue=0, offvalue=1)formatMenu.add_command(label='字体(F)...')menubar.add_cascade(label='格式(O)', menu=formatMenu)# 二级菜单 查看integer2 = tk.IntVar()checkMenu = tk.Menu(menubar, tearoff=0)# 三级菜单 缩放(Z)twoCheckMenu = tk.Menu(checkMenu, tearoff=0)twoCheckMenu.add_command(label=f'放大(I){" "*14}Ctrl + 加号')twoCheckMenu.add_command(label=f'缩小(O){" "*13}Ctrl + 减号')twoCheckMenu.add_command(label=f'恢复默认缩放{" "*11}Ctrl+0')checkMenu.add_cascade(label='缩放(Z)', menu=twoCheckMenu)checkMenu.add_checkbutton(label='状态栏(S)', variable=integer2, onvalue=0, offvalue=1)menubar.add_cascade(label='查看(V)', menu=checkMenu)# 二级菜单 帮助helpMenu = tk.Menu(menubar, tearoff=0)helpMenu.add_command(label='查看帮助(H)')helpMenu.add_command(label='发送反馈(F)')helpMenu.add_command(label='关于文本编辑器(A)')menubar.add_cascade(label='帮助(H)', menu=helpMenu)# 右键菜单rightKeyMenu = tk.Menu(base, tearoff=0)rightKeyMenu.add_command(label='撤销(U)')rightKeyMenu.add_command(label='剪切(T)')rightKeyMenu.add_command(label='复制(C)')rightKeyMenu.add_command(label='粘贴(P)')rightKeyMenu.add_command(label='删除(D)')rightKeyMenu.add_command(label='全选(A)')rightKeyMenu.add_checkbutton(label='从右到左的阅读顺序(R)')rightKeyMenu.add_checkbutton(label='显示 Unicode 控制字符(S)')# 三级级菜单 插入 Unicode 控制字符(I)twoRightMenu = tk.Menu(rightKeyMenu, tearoff=0)twoRightMenu.add_command(label='特殊字符')# ...rightKeyMenu.add_cascade(label='插入 Unicode 控制字符(I)', menu=twoRightMenu)rightKeyMenu.add_command(label='关闭输入法(L)')rightKeyMenu.add_command(label='汉字重选(R)')# 捆绑鼠标右键事件base.bind('<Button-3>', lambda event: rightKeyEvent(event, rightKeyMenu))# 底行内容显示bottomFrame = tk.Frame(base, borderwidth=2, relief=tk.GROOVE)bottomFrame.pack(side=tk.BOTTOM, fill='both')# 字符编码charCodeLabel = tk.Label(bottomFrame, text=' UTF-8', width=16, anchor='w', borderwidth=2, relief=tk.GROOVE)charCodeLabel.pack(side=tk.RIGHT)# 换行方式(回车换行)CRLFlabel = tk.Label(bottomFrame, text=' Windows (CRLF)', width=17, anchor='w', borderwidth=2, relief=tk.GROOVE)CRLFlabel.pack(side=tk.RIGHT)# 字体大小fontSizeLabel = tk.Label(bottomFrame, text='100%', width=6, borderwidth=2, relief=tk.GROOVE)fontSizeLabel.pack(side=tk.RIGHT)# 光标位置locationLabel = tk.Label(bottomFrame, text='  第 1 行,第 1 列', width=19, anchor='w', borderwidth=2, relief=tk.GROOVE)locationLabel.pack(side=tk.RIGHT)# 右侧滚动条scrollbar = tk.Scrollbar(base)scrollbar.pack(side=tk.RIGHT, fill='both')# 文本编辑区域setFont = font.Font(family='Tahoma', size=12)textData = tk.Text(base, wrap='word', yscrollcommand=scrollbar.set, font=setFont)textData.pack(fill='both', expand=True)scrollbar.config(command=textData.yview)# 修改窗口标题的图片icon = tk.PhotoImage(file='.\\..\\photo\\记事本.png')base.iconphoto(True, icon)base.mainloop()             # 窗口主循环# 代码测试
if __name__ == '__main__':main()
else:print(f'导入{__name__}模块')

作者:周华

创作日期:2023/11/9

更多推荐

Python 使用tkinter复刻Windows记事本UI和菜单功能(二)

本文发布于:2023-11-15 07:41:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1596112.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:菜单   记事本   功能   复刻   tkinter

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!