鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[作品展示] 记事本 2.0

[复制链接]
发表于 2019-9-19 16:48:51 | 显示全部楼层
LOOK rhf rhf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 16:49:26 | 显示全部楼层
LOOK 看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 20:42:15 | 显示全部楼层
前来学习 学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 20:52:17 | 显示全部楼层
来吧,大爷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 21:45:49 | 显示全部楼层
nice
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-3 00:07:16 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-3 09:45:53 | 显示全部楼层
嗯嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 12:53:15 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 13:11:23 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-5 21:51:06 | 显示全部楼层
来看一眼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-5 22:03:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 22:14:57 | 显示全部楼层
帮你改了一下:
# -*- coding:utf-8 -*-
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
from os.path import isfile

import pickle as pk
import easygui

# 新建文件
def new(event=None):
    global title
    global saved
    global filename
    
    title = "记事本 --- *New*"
    saved = True
    root.title(title)
    filename = ""
    text.delete("1.0", END)

# 键盘按下时触发
def enter(event):
    global title
    global saved

    if event.char == "":
        return False

    text.edit_separator()
    
    if saved:
        list1 = list(title)
        list1.insert(8, "*")
        list1.extend(["*"])
        title = "".join(list1)
        root.title(title)
        saved = False

# 打开文件
def open_file(event=None):
    global filename, title

    filename = easygui.fileopenbox(title="打开文件", filetypes = ["*.txt"])
    
    if filename:
        with open(filename, encoding="utf-8") as file:
            text.delete("1.0", END)
            text.insert("1.0", file.read())
            
        title = "记事本 --- " + filename
        root.title(title)

# 保存文件
def save(event=None):
    global title, filename, saved

    # 以打开文件但没有保存
    if title[8] == "*" and title[-1] == "*" and title != "记事本 --- *New*":
        list1 = list(title)
        
        del list1[8]
        del list1[-1]
        
        title = "".join(list1)
        root.title(title)

    # 未保存文件
    if title == "记事本 --- New" or title == "记事本 --- *New*":
        filename = easygui.filesavebox(title="保存文件", filetypes = ["*.txt"])
        
        if filename:
            with open(filename, "w") as file:
                file.write(text.get("1.0", END))
                
            title = "记事本 --- " + filename

    # 以打开文件但没有保存
    else:
        with open(filename, "w") as file:
            file.write(text.get("1.0", END))
            
        title = "记事本 --- " + filename
        
    saved = True
    root.title(title)

# 撤销
def undo():
    global title
    global saved
    
    text.edit_undo()
    
    if saved:
        list1 = list(title)
        
        list1.insert(8, "*")
        list1.extend(["*"])
        
        title = "".join(list1)
        root.title(title)
        
        saved = False

# 重做
def redo():
    global title
    global saved

    text.edit_redo()
    
    if saved:
        list1 = list(title)
        
        list1.insert(8, "*")
        list1.extend(["*"])
        
        title = "".join(list1)
        root.title(title)
        
        saved = False

# 退出
def exit_program():
    if not saved:
        flag = messagebox.askquestion("提示", "文件未保存,是否保存文件?")
        
        if flag == "yes":
            save()
            root.quit()
            
    root.quit()

# 确认更改字体名字
def confirm():
    font_list.append(fontname.get(ACTIVE))
    mst.destroy()
    fontsize_dialog()

# 确认更改字体大小
def confirm2():
    font_list.append(w.get())
    text.config(font=tuple(font_list))
    pk.dump(font_list, file=open("font.pkl", "wb"))
    m.destroy()

# 调整字体
def fontname_dialog():
    global mst
    global fontname
    
    font_list.clear()
    
    mst = Toplevel(root)
    mst.title("调整字体")
    mst.resizable(False, False)

    frame = Frame(mst)
    frame.pack(side=TOP)

    fontname = Listbox(frame, width=30)
    fontname.pack(side=LEFT)

    confirmb = Button(mst, text="确定", width=25, command=confirm)
    confirmb.pack(side=BOTTOM)

    for each in ["楷体", "仿宋", "黑体"]:
        fontname.insert(END, each)

    mst.protocol("WM_DELETE_WINDOW", set_font)

# 调整字体大小
def fontsize_dialog():
    global w, m

    m = Toplevel(root)
    m.title("调整字体大小")
    m.resizable(False, False)

    w = Scale(m, from_=2, to=72, length=400, orient=HORIZONTAL, tickinterval=10)
    w.pack()
    
    confirmb = Button(m, text="确定", width=25, command=confirm2)
    confirmb.pack(side=BOTTOM)

    m.protocol("WM_DELETE_WINDOW", set_font)

# 获取历史字体并设置
def set_font():
    fonttuple = tuple(pk.load(open("font.pkl", "rb")))
    
    text.config(font=fonttuple)


title = "记事本 --- New"
saved = True
filename = ""
mst = None
fontname = None
w = None
m = None

if not isfile("font.pkl"):
    pk.dump(("仿宋", 15), open("font.pkl", "wb"))

try:
    font = pk.load(open("font.pkl", "rb"))
    
except EOFError:
    pk.dump(("仿宋", 15), open("font.pkl", "wb"))
    font = pk.load(open("font.pkl", "rb"))

font_list = list(pk.load(open("font.pkl", "rb")))

root = Tk()
root.title(title)

mb = Menu(root)

# 文件菜单
filemenu = Menu(mb, tearoff=False)
filemenu.add_command(label="新建", command=new)
filemenu.add_command(label="打开", command=open_file)
filemenu.add_command(label="保存", command=save)
filemenu.add_separator()
filemenu.add_command(label="退出", command=exit_program)

# 编辑菜单
editmenu = Menu(mb, tearoff=False)
editmenu.add_command(label="撤销", command=undo)
editmenu.add_command(label="重做", command=redo)

# 调整菜单
adjustmenu = Menu(mb, tearoff=False)
adjustmenu.add_command(label="调整字体", command=fontname_dialog)

mb.add_cascade(label="文件", menu=filemenu)
mb.add_cascade(label="编辑", menu=editmenu)
mb.add_cascade(label="调整", menu=adjustmenu)

sb = Scrollbar(root)
sb.pack(side=RIGHT, fill=Y)

text = Text(root, yscrollcommand=sb.set, font=tuple(font), undo=True, autoseparator=False, width=50, height=15)
text.pack(side=LEFT, expand=True)

sb.config(command=text.yview)
text.bind("<KeyRelease>", enter)
text.bind("<Control-s>", save)
text.bind("<Control-n>", new)
text.bind("<Control-o>", open_file)

root.config(menu=mb)

root.resizable(0, 0)
root.protocol("WM_DELETE_WINDOW", exit_program)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 22:22:09 | 显示全部楼层
text.edit_separator() 是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-20 10:42:32 | 显示全部楼层
一个账号 发表于 2020-2-19 22:22
text.edit_separator() 是什么?

插入分隔符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 10:42:56 | 显示全部楼层

哦,想起来了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 12:50:43 | 显示全部楼层
学习运行一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 09:27:51 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 18:29:08 | 显示全部楼层
oh,了解了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 17:28:27 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 15:46:24 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表