2024年python 记事本1,2024年最新android binder机制 面试题

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    # 创建主菜单栏
    menubar = ttk.Menu(root)
    '''创建一个弹出菜单'''
    menuPop = ttk.Menu(root,tearoff=False)

    #创建子菜单
    menuFlie = ttk.Menu(menubar)
    menuEdit = ttk.Menu(menubar)
    menuHelp = ttk.Menu(menubar)

    # 将子菜单加入到主菜单栏
    menubar.add_cascade(label='文件(F)',menu=menuFlie)
    menubar.add_cascade(label='编辑(E)',menu=menuEdit)
    menubar.add_cascade(label='帮助(H)',menu=menuHelp)

    # 添加菜单项
    menuFlie.add_command(label='打开',accelerator='Ctrl+O',command=self.open_file)
    menuFlie.add_command(label='保存',accelerator='Ctrl+S',command=self.save_file)
    menuFlie.add_command(label='另存为',accelerator='Ctrl+W',command=self.saveas_file)
    menuFlie.add_separator()        #添加分割线
    menuFlie.add_command(label='退出',accelerator='Ctrl+Q',command=self.exit)

    menuPop.add_command(label="剪切", command=self.cut_text)
    menuPop.add_command(label="复制", command=self.copy_text)
    menuPop.add_command(label="粘贴", command=self.paste_text)
    menuPop.add_command(label="全选", command=self.select_all)
    menuPop.add_command(label="清空", command=self.clear_text)


    #将主菜单栏加到根窗口
    root.config(menu=menubar)
    
    style = ttk.Style()
    #文本编辑区
    self.textarea = ttk.ScrolledText(root,
        highlightcolor=style.colors.primary,
        highlightbackground=style.colors.border,
        highlightthickness=1)

    self.textarea.pack(fill=BOTH,expand=True)

    #增加快捷键的处理
    root.bind('<Control-o>',lambda event:self.open_file())
    root.bind('<Control-s>',lambda event:self.save_file())
    root.bind('<Control-w>',lambda event:self.save_file())
    root.bind('<Control-a>',lambda event:self.select_all())
    root.bind('<Control-d>',lambda event:self.clear_text())
    root.bind('<Control-q>',lambda event:self.exit())
    
    root.bind('<Key>',lambda event:self.changed_file()) # 检查文件是否修改

    self.textarea.bind("<Button-3>",lambda event:self.popup(menuPop=menuPop,event=event)) # 绑定鼠标右键,执行popup函数

    

def cut\_text(self,event=None):
    self.textarea.event_generate('<<Cut>>')

def copy\_text(self,event=None):
    self.textarea.event_generate('<<Copy>>')
    
def paste\_text(self,event=None):
    self.textarea.event_generate('<<Paste>>')

def select\_all(self,event=None):
    self.textarea.tag_add('sel', '1.0', 'end')

def clear\_text(self,event=None):
    global root 
    self.textarea.delete("1.0",END)

    if self.filename[0] == "\*":
        self.filename = self.filename[1:]
        root.title(self.filename + "-记事本")

def popup(self,menuPop,event):
    menuPop.post(event.x_root, event.y_root)

# 打开文件选择对话框
def open\_file(self):

    global root

    self.filepath = askopenfilename(filetypes=file_types)

    if self.filepath != "":
       
        try:

            with open(self.filepath,"r",encoding="utf-8") as file:
                # 清空文本域
                self.textarea.delete("1.0",END)
                # 将文件内容添加进来
                msg = file.read()
                self.textarea.insert(END,msg)
                # 记录打开的文件
                self.unchange_file = msg.strip()

                o_index = self.filepath.rfind("/") + 1
                self.filename = self.filepath[o_index:]
                root.title(self.filename + "-记事本")

        except PermissionError as e:
                # 清空文本域
                self.textarea.delete("1.0",END)
                # 弹出窗口
                showerror(title='错误', message='权限不足,无法打开该文件!')

        except UnicodeDecodeError as e1:
                self.textarea.delete("1.0",END)
                showerror(title='错误', message='文件格式错误,无法打开该文件!')

        except Exception as e2:
                self.textarea.delete("1.0",END)
                showerror(title='错误', message='无法打开该文件!')


# 保存文件
def save\_file(self,exit_program=False):
    global root

    # 判断是否是新文件(file\_name为空)
    if "无标题" not in self.filename:
        
        if self.filename[0] == "\*":

            save_msg = self.textarea.get("1.0",END)

            with open(self.filepath,"w",encoding="utf-8") as file:
                file.write(save_msg)
                # 更新保存后的文件
                self.unchange_file = save_msg.strip()
                # 去除\*
                self.filename = self.filename[1:]
                root.title(self.filename + "-记事本")
    else:
        # 新文件--> 另存为
        self.saveas_file()

# 另存为文件
def saveas\_file(self):

    global root

    self.filepath = asksaveasfilename(defaultextension=".txt", initialfile="未命名.txt",filetypes=file_types)
    s_index = self.filepath.rfind("/") + 1

    if self.filepath != "":
        # 存在文件路径
        with open(self.filepath,"w",encoding="utf-8") as file:
            file.write(self.textarea.get("1.0",END))
        self.filename = self.filepath[s_index:] # 文件名记录
    else:
        self.filename == "无标题"

             
    root.title(self.filename + "-记事本")

# 判断文件是否修改过
def changed\_file(self) -> bool:
    global root

    # 从文本区域中获取文本
    change_file = self.textarea.get("1.0",END).strip()

    if change_file == "" and (self.unchange_file == change_file or "无标题" in self.filename) and self.filename[0] == "\*": 

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值