Files
MikOS/sys/lib/RUN-TXT/__init__.mia
2026-01-25 17:01:16 +08:00

180 lines
8.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import tkinter as tk
try:
#绝对会报错,只是用于高亮提示,可以删除,真正的导入部分在Kernel
import sys.kernel.UI as UI
from sys.kernel.tools import *
except:
pass
class Notepad_base(UI.Window):
def __init__(self):
super().__init__()
self.TitleText.config(text="记事本")
self.geometry(f'750x550+{self.winfo_screenwidth() // 4}+{self.winfo_screenheight() // 8}')
self.Menu=UI.Menu(self)
""" 文件菜单 """
self.fileMenu = tk.Menu(self, tearoff=0)
self.Menu.add_sub(label='文件(F)', menu=self.fileMenu)
self.fileMenu.add_command(label=f'新建(N){" " * 28}Ctrl+N')
self.fileMenu.add_command(label=f'新窗口(W){" " * 16}Ctrl+Shift+N')
self.fileMenu.add_command(label=f'打开(O)...{" " * 26}Ctrl+O')
self.fileMenu.add_command(label=f'保存(S){" " * 29}Ctrl+S')
self.fileMenu.add_command(label=f'另存为(A)...{" " * 15}Ctrl+Shift+S')
self.fileMenu.add_command(label=f'页面设置(U)...')
self.fileMenu.add_command(label=f'打印(P)...{" " * 27}Ctrl+P')
self.fileMenu.add_command(label=f'退出(X)')
""" 编辑菜单 """
# 创建二级菜单栏(此时为空)
self.editMenu = tk.Menu(self, tearoff=0)
# 向一级菜单栏添加 编辑 项并与二级菜单editMenu建立级联关系从属/上下级)
self.Menu.add_sub(label='编辑(E)', menu=self.editMenu)
# 编辑的二级菜单栏添加 ... 项
self.editMenu.add_command(label=f'撤销(U){" " * 26}Ctrl+Z')
self.editMenu.add_command(label=f'剪切(T){" " * 26}Ctrl+X')
self.editMenu.add_command(label=f'复制(C){" " * 26}Ctrl+C')
self.editMenu.add_command(label=f'粘贴(V){" " * 26}Ctrl+V')
self.editMenu.add_command(label=f'删除(L){" " * 27}Delete')
self.editMenu.add_command(label=f'使用 Bing 搜索...{" " * 14}Ctrl+E')
self.editMenu.add_command(label=f'查找(F)...{" " * 25}Ctrl+F')
self.editMenu.add_command(label=f'查找上一个(N){" " * 23}F3')
self.editMenu.add_command(label=f'查找下一个(V){" " * 15}Shift+F3')
self.editMenu.add_command(label=f'替换(R)...{" " * 23}Ctrl+H')
self.editMenu.add_command(label=f'转到(G)...{" " * 23}Ctrl+G')
self.editMenu.add_command(label=f'全选(A){" " * 26}Ctrl+A')
self.editMenu.add_command(label=f'时间/日期(D){" " * 25}F5')
""" 格式菜单 """
# 全局变量
self.word_wrap = tk.BooleanVar(value=True) # 是否选择勾上
# 创建二级菜单栏(此时为空)
self.formatMenu = tk.Menu(self, tearoff=0)
# 向一级菜单栏添加 格式 项并与二级菜单formatMenu建立级联关系从属/上下级)
self.Menu.add_sub(label='格式(O)', menu=self.formatMenu)
# 格式的二级菜单栏添加 ... 项
self.formatMenu.add_checkbutton(label='自动换行(W)', variable=self.word_wrap, onvalue=1, offvalue=0)
self.formatMenu.add_command(label='字体(F)...')
""" 查看菜单 """
# 全局变量
self.state = tk.BooleanVar(value=True)
# 创建二级菜单栏(此时为空)
self.viewMenu = tk.Menu(self, tearoff=0)
# 向一级菜单栏添加 查看 项并与二级菜单checkMenu建立级联关系从属/上下级)
self.Menu.add_sub(label='查看(V)', menu=self.viewMenu)
# 创建三级菜单栏(此时为空)
self.threeViewMenu = tk.Menu(self.viewMenu, tearoff=0)
# 查看的二级菜单栏添加 ... 项
self.viewMenu.add_cascade(label='缩放(Z)', menu=self.threeViewMenu)
self.viewMenu.add_checkbutton(label='状态栏(S)', variable=self.state, onvalue=1, offvalue=0)
# 缩放的三级菜单栏添加 ... 项
self.threeViewMenu.add_command(label=f'放大(I){" " * 14}Ctrl + 加号')
self.threeViewMenu.add_command(label=f'缩小(O){" " * 13}Ctrl + 减号')
self.threeViewMenu.add_command(label=f'恢复默认缩放{" " * 11}Ctrl+0')
""" 帮助菜单 """
# 创建二级菜单栏(此时为空)
self.helpMenu = tk.Menu(self, tearoff=0)
# 向一级菜单栏添加 帮助 项并与二级菜单helpMenu建立级联关系从属/上下级)
self.Menu.add_sub(label='帮助(H)', menu=self.helpMenu)
# 帮助的二级菜单栏添加 ... 项
self.helpMenu.add_command(label='查看帮助(H)')
self.helpMenu.add_command(label='发送反馈(F)')
self.helpMenu.add_command(label='关于文本编辑器(A)')
# 菜单之间插入分隔线
self.helpMenu.insert_separator(2)
""" 右键菜单 """
# 创建二级菜单栏(此时为空)
self.rightKeyMenu = tk.Menu(self, tearoff=0)
# 创建三级菜单栏(此时为空)
self.threeRightMenu = tk.Menu(self.rightKeyMenu, tearoff=0)
# 右键菜单的二级菜单栏添加 ... 项
self.rightKeyMenu.add_command(label='撤销(U)')
self.rightKeyMenu.add_command(label='剪切(T)')
self.rightKeyMenu.add_command(label='复制(C)')
self.rightKeyMenu.add_command(label='粘贴(P)')
self.rightKeyMenu.add_command(label='删除(D)')
self.rightKeyMenu.add_command(label='全选(A)')
self.rightKeyMenu.add_checkbutton(label='从右到左的阅读顺序(R)')
self.rightKeyMenu.add_checkbutton(label='显示 Unicode 控制字符(S)')
self.rightKeyMenu.add_cascade(label='插入 Unicode 控制字符(I)', menu=self.threeRightMenu)
self.rightKeyMenu.add_command(label='关闭输入法(L)')
self.rightKeyMenu.add_command(label='汉字重选(R)')
self.rightKeyMenu.add_command(label='使用 Bing 搜索(B)...')
# 插入 Unicode 控制字符(I)的三级菜单栏添加 ... 项
self.threeRightMenu.add_command(label='特殊字符1')
self.threeRightMenu.add('command', label='特殊字符2')
self.threeRightMenu.insert(3, 'command', label='特殊字符3')
# ...
# 菜单之间插入分隔线
self.rightKeyMenu.insert_separator(1)
self.rightKeyMenu.insert_separator(6)
self.rightKeyMenu.insert_separator(8)
self.rightKeyMenu.insert_separator(12)
self.rightKeyMenu.insert_separator(15)
# 捆绑鼠标右键事件
self.bind('<Button-3>', lambda event: self.rightKeyEvent(event, self.rightKeyMenu))
""" 底行内容显示 """
# 底部内容框架
self.bottomFrame = tk.Frame(self.Widget)
self.bottomFrame.pack(side=tk.BOTTOM, fill='both')
# 状态栏框架
self.stateFrame = tk.Frame(self.bottomFrame)
self.stateFrame.pack(side=tk.BOTTOM, fill='both')
# 字符编码
self.charCodeLabel = tk.Label(self.stateFrame,text=' UTF-8',width=16,anchor='w')
self.charCodeLabel.pack(side=tk.RIGHT)
# 换行方式(回车换行)
self.CRLFlabel = tk.Label(self.stateFrame,text=' Windows (CRLF)',width=17,anchor='w')
self.CRLFlabel.pack(side=tk.RIGHT)
# 字体大小
self.fontSizeLabel = tk.Label(self.stateFrame, text='100%', width=6)
self.fontSizeLabel.pack(side=tk.RIGHT)
# 光标位置
self.locationLabel = tk.Label(self.stateFrame,text=' 第 1 行,第 1 列',width=19,anchor='w')
self.locationLabel.pack(side=tk.RIGHT)
# 右侧滚动条
self.rightScrollbar = tk.Scrollbar(self.Widget, orient='vertical')
self.rightScrollbar.pack(side=tk.RIGHT, fill='both')
# 底侧滚动条
self.bottomScrollbar = tk.Scrollbar(self.bottomFrame, orient="horizontal")
self.bottomScrollbar.pack(side=tk.BOTTOM, fill='both')
# 文本编辑区域
self.text = tk.Text(self.Widget)
self.text.pack(expand=True, fill='both')
# 将焦点设置到Text控件上
self.text.focus()
# 修改窗口标题的图片
self.notepad_photo = tk.PhotoImage(file=app_info["path"]+"ICO.png")
self.TitleICO.config(image=self.notepad_photo)
self.TaskICO.config(image=self.notepad_photo)
self.TaskICO.update()
self.open()
# Text文本鼠标右键菜单事件
def rightKeyEvent(self, event, object):
object.post(event.x_root, event.y_root)
def open(self):
if os.path.isfile(kw["f"]):
self.text.insert("insert",openr(kw["f"],2))
# 代码测试
if __name__ == '__main__':
ui = Notepad_base() # 实例化记事本UI
ui.mainloop() # 循环窗口运行
else:
print(f'导入【{__name__}】')